[SCHEMA] Support a full-featured tag interface, part 1.

Summary:
This is the first in a series of three or four commits.

Rename UserTag to Tag, and tweak its schema, as well as the Folder schema.
Everything we expose as a tag now has a corresponding Tag row, whether the tag
comes from an IMAP folder ('gmail-jobslist'), was created via the API
('my-awesome-tag'), or has some special semantics ('unread', 'drafts', ...).
This makes it a lot easier to reason about what's going on.

This is a precursor to the following changes:
 - Modify our actions code such that Thread.folders is *always* an exact mirror
   of what we sync from the IMAP backend. We express local actions only by
   mutating tags, not folders. Again, this makes things simpler.

 - Get rid of the Redis queue for actions syncback. Instead, we'll have a
   syncback service that consumes the transaction log, and executes actions
   based on recorded tag mutations. Per discussion with mg, this means that,
   for example, the API server can run on a machine without access to user
   credentials.

Test Plan: Will add tests once I put all the pieces together.

Reviewers: spang

Reviewed By: spang

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