Login v2 API

Introducing the v2 Login API, backed by the original Admin.Login logic. Builds on proposed pull request #367.
This seems strange to me? Why does st close itself here?

Surely it's up to the owner of the *State instance to decide to Close() when an error is returned? Maybe I'm missing some aspect.