[SCHEMA] Establish an association between messages and contacts.

Summary:
We want this mostly so that we can filter messages based on the from/to/cc/bcc
fields -- constructing SQL queries against the current JSON-encoded fields is
extremely clunky.

This commit also removes the HookManager abstraction, which we probably won't
use since we're not doing synchronous hooks.

Test Plan: Unit tests updated.

Reviewers: spang, mg

Reviewed By: spang

Differential Revision: https://review.inboxapp.com/D127
Use flanker instead of manual parsing when canonicalizing adresses.
Bump alembic dep to latest.

Not fixing anything specific, but want to keep up-to-date.
[SCHEMA] Save more folder names.
[SCHEMA] Separate tables for backend folders/labels and Inbox labels.

Following a design discussion, we are splitting our notion of folders
and labels into two different things: folders/labels from the account
backend (e.g. Gmail), and Inbox-specific labels.
Port Gmail code to new folder/label schema.

With this change, we rip out folder name translation for Gmail labels
and store them as-is. Special Inbox labels will be provided via
different queries; they no longer are stored specially in the database.