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.
Should we have a nice message saying why this is failing?