Sync suite

work in progress, will keep adding more tests to this and merge it for the release.

some of the sync behavior actually happens in the storages, for instance making sure you update the parent on an outgoing change, that's something that happens inside src/indexeddb.js, so might have to add tests there as well.