Sync status reporting + dashboard v1

Sync status
-----------
To calculate mailsync status and progress, we track the following metrics,
and store them in the FolderSync tables -

Before we start downloading messages:
remote_uid_count, using crispin_client.all_uids()
num_to_download
num_to_delete
num_to_update
timestamp

If the state is `initial` rather than `poll`, we also store
sync_type i.e. starting anew or resuming, determined by the cache state.

As we download:
num_downloaded_so_far since timestamp
num_left_to_download

Dashboard app
-------------
A basic Flask app is in inbox/monocle
To run it:
python inbox/monocle/app.py
go to http://0.0.0.0:5000/accounts or http://0.0.0.0:5000/accounts/{account_id}

Test Plan:
Visual inspection using the app.
tests/general/test_mutable_json_type.py

Reviewers: spang

Reviewed By: spang

Subscribers: emfree

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