Add support for user-provided IMAP settings; refactor auth.

Summary:
This commit implements support for user-provided IMAP and SMTP settings, along
with related cleanup and refactoring in the auth code.

* Allow IMAP and SMTP endpoints for ImapAccounts to be overridden on a
  per-account basis.
* Define a "custom" provider for accounts with such overrides.
* Refactor auth modules to move functionality into AuthHandler classes.
* Refactor OAuth code, consolidating functionality split between the
  inbox.oauth and inbox.auth.oauth modules.
* Define interactive_auth() method on AuthHandler subclasses, to handle the
  flow of authing via bin/inbox-auth. Previously, this functionality was partly
  implemented in create_auth_account functions, and partly scattered.

Test Plan:
Add unit tests; add account with custom settings and ensure that
sync and sending works; run bin/inbox-auth for different account types.

Reviewers: charles

Reviewed By: charles

Differential Revision: https://review.inboxapp.com/D639