SmartSyncPlugin for Android - first cut

Right now, the sync runs in a thread pool of size 1, therefore all sync operation will be serialized.
Alternatively, we could error out if you request a sync while a sync is going on. For instance, if sync is tied to a button and the html/js doesn't disable the button after it was pressed, it would be easy for users to submit a bunch of sync calls, which would a lot of repeated work with the current code.