Adds APIAuthenticator to handle retrieving API token

- introduces Authenticator interface
- adds methods to User for determining the existence of tokens,
  usernames, and passwords