Android: Background Sync

This implements fully-decoupled background sync that can handle realtime interactions and run independently of the UI if so configured.  This also upends the local DB paradigm from delete-and-replace to update-and-merge, allowing story state to be retained for offline reading.  Also included are all the options for background sync, offline reading, and image prefetch.  The new sync status UI is stubbed in, as well.

*Importantly, this is a debug/beta state for the app and not a release version.*  There are a number of things intentionally left unifinished:

 * The sync UI has been left very informational so we can collect better bug reports before we put the less-informative polish on it.
 * Indirect/async mark-read actions have been left out for now so as not to conflate them with the issue being worked in #537. (this means you will get some error noise when reading offline)
 * Logging is a bit more noisy than we would have in a release build, causing some mild slowness when syncing.

I will queue up the fixes for the above issues for pull with any bugs we squash during the beta.

That said, the mostly-complete rewrite of the DB should cause first-time sync to be an order of magnitue faster.  Also, all users will now benefit from prefetch of unread stories, even if they never enable background sync.  After a short catch-up period post-upgrade, unread stories will be available for reading immediately, with no delay at all.

I would like to get this into the hands of as many folk as possible, via the beta channel especialy.  I am going to create a new issue category for bugs in this beta, since I am certain there will be some for me to track and fix.
disconnect should really be called in a finally block