Reuse existing login tokens (#6034)
### Description
Instead of fetching new tokens on every login attempt, look for an
existing token to exit early. Also introduce `Client` for API clients so
we can test more easily via mocks.
### Testing Instructions
```
cd creates/turborepo-auth/src/commands
cargo test test_login -- --exact
cargo test test_sso_login -- --exact
```