Improve authentication process

* No token reuse; fixes #728
* Better error message for invalid credentials; fixes #622
* Enable retrying 2FA code input if previous one was invalid

New tokens are created with name such as `hub for mislav@macbook-pro.local`. An incremented number is added onto the name if the previous name is taken.

If you use hub on 5 computers, that will generate 5 distinct tokens now. Not the end of the world I guess.
Nah this is really an edge case. Just a recursion prevention. If somebody submits a bug with a 422 at this point, we'll know immediately that they've reached the recursion limit and act accordingly, but I really don't think it will ever come to that.