Login v2 API

Introducing the v2 Login API, backed by the original Admin.Login logic. Builds on proposed pull request #367.
So is "maybeUserInfo" the only bit that is new to the login request? I suppose that is the other change in the 'loginV2' function, where we pass LoginResultV2 as the result type.
I'd still really hope we could consolidate more of this code, given how much of it is duplicated. I guess the concern is that we might break compatibility accidentally at some point, and it is easier to do so with shared code.

How *I* would like to see that approached is to have a set of tests against the old API version that help explicitly declare its interop. As in, even testing that unknown parameters are *not* received. But I think others have felt that extra params are ok to return. I *think* William is against them, but maybe run it by him to be sure.