inverts controls on configuring the sync worker. User defines a worker and includes our worker script in it. We needed this so the user could load in their own db provider and transport provider functions
splits DBProvider from useSync so you can use a DB without syncing it.