Make GmailCrispinClient.g_metadata() return namedtuples.

This is exactly the sort of place where using a namedtuple makes the
code cleaner.
Use numpy formatting for expand_threads() docstring.
Implement a uid/thread-polling helper for IMAP/Gmail initial sync.

In the case that a user has e.g. a very large inbox, our current design
has the shortcoming that, during the initial sync, it won't continue to
download new messages. This is untenable for the user experience, so
we're solving it by having a parallel greenlet during this time that
keeps checking for new UIDs/threads and adding them to the top of the
initial sync uid/thread download stack.
PEP8 formatting cleanups
Make Gmail/IMAP backend mostly flake8-clean.

Holy moly I never realized how uuuugly the default Python indentation is
in vim. https://github.com/hynek/vim-python-pep8-indent saves the day!
flake8 lint crispin

PEP8 ALL THE THINGS
Use absolute imports in crispin.