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.
Report Gmail thread download status _after_ starting download.

With the old ordering, we would report progress for downloading 9
threads going from 0/9 to 8/9, rather than 1/9 to 9/9.
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.