Poll for contact updates; rewrite merge logic.

Summary:
* For each IMAP account, spawn a Greenlet to poll periodically for contact
  updates.

* Rewrite the contact update logic so that local/remote update merges will
  actually work once we have the facility to make local contact updates.
  Previously, a contact entry with source 'remote' would be stored when the
  contact was first added from Google API client. But we wouldn't update that
  entry on subsequent updates from the Google client. This means that merges
  wouldn't really work correctly.

This commit updates contact entries with source 'remote' at each sync, so
that merges should work correctly in the face of repeated local or remote
updates to contact data.

Test Plan:
Unit tests added. Ran ./inbox debug while adding/updating my test
account's contacts and verified database updates.

Reviewers: spang

Reviewed By: spang

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