Tag interface, part 3.

Summary:
 * Delete local actions code. Local actions are now expressed solely by
   adding/removing tags. Refactor the rest of the existing actions code as a
   result.

 * Add a listener service which checks the transaction log for tag mutations,
   and executes the corresponding syncback actions.

 * Expose 'unread' and 'archive' as tags on threads.

 * Support dependent tag mutations (e.g., remove the 'inbox' tag when you add
   the 'archive' tag, and vice versa).

Test Plan: Working on it.

Reviewers: spang

Differential Revision: https://review.inboxapp.com/D162
[SCHEMA][WIP] Client sync API, version 1.

This is a kind of hacky sketch implementation, which only returns changes for
message and thread objects.

Still need to:
 * Refactor and clarify revision code.
 * Support sync for other object types (contacts, drafts, attachments, tags, ...).
 * Parse an optional 'type' parameter on the /sync/events API call, to allow
   clients to only fetch changes on object types that they care about.
 * Return only deltas on object updates, not full object copies.