Login v2 API

Introducing the v2 Login API, backed by the original Admin.Login logic. Builds on proposed pull request #367.
So it still feels like loginV1 vs loginV0 could be

type resultInterface interface {
  Servers()
  Facades()
  EnvironTag()
}
func (st *State) loginHelper(request params.LoginRequest, version int, result resultInterface) error {
  err := st.APICall("Admin", version, "", "Login", request, result)
  if version != 0 && len(result.Facades()) == 0 {
    return NotImplemented
  }
...
  return nil
}

And then the rest of the code is all shared.

However, maybe it is not worth the resultInterface and putting the data blob behind a bunch of Getter functions? I guess that's a point of taste, but it does look like a lot of otherwise completely shareable code.