Add default value for Message.subject to prevent TypeError.

Missing subject should be the empty string, not None.
[DEPENDENCIES] Install talon from our fork.

Our fork of talon rips out the signature-detection part and its associated
dependencies (PyML, numpy), making it much less painful to install.

Fixes T416 and 417.
Actions are only scheduled for a valid account, api returns an HTTP 403/503 error otherwise.
Fixes T420.

Summary:
We check account.sync_state to determine validity.
403: invalid
503: connerror

Test Plan:
Test added to tests/api/test_validation.py

Reviewers:
emfree

Reviewed By:
emfree

Subscribers:
charles

Maniphest Tasks:
T420

Differential Revision:
https://review.inboxapp.com/D451
Fix uidvalidity_cb arguments in actions.backends.imap.

Thanks @khamidou for pointing this out.
[SCHEMA] Simplify transaction log construction.

Summary:
This commit implements a leaner, meaner transaction log. Instead of storing an
ORM-derived delta, only store a snapshot of the API representation of the
versioned object. This reduces the volume of data we store, makes constructing
the transaction faster, and removes some complexity left over from when we were
trying to infer syncback actions from the transaction log. It's way less
generic, but better suited to our actual application.

Includes some simplifications to the Lens model -- just removing parts that
would be broken by this change, and were part of webhooks but are unlikely to
be repurposed into ping.

Test Plan: Need to add some unit tests before landing.

Reviewers: spang

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