Currently, the Autopromote class uses multiple globals:
$wgAutopromote $wgAutopromoteOnce $wgEmailAuthentication
as well as the PermissionManager service, and soon the HookContainer/HookRunner and UserGroupManager services
I propose that this be moved into a service with the globals and dependencies injected.
Within deployed code, autopromote is used in two places: the SpecialUserrights and User classes, both in core, so the old class can be immediately deprecated