Login v2 API

Introducing the v2 Login API, backed by the original Admin.Login logic. Builds on proposed pull request #367.
Generally a good practice, but inference doesn't properly handle the assignment from newUpgradingRoot. Needs to be declared as an interface as far as I can tell.