Sync per node instead of all at once

our current approach to sync, traversing the whole tree and firing off many many requests to the server, is not scalable: if more than 10 changes need to be synced, all of them will time out and fail, and the next sync cycle will not recover from that.

to deal with this, i'm storing much more data for each node, see `data-format.txt` (design doc for this branch, to be moved into the documentation somewhere before merge).

Tasks:

* [x] remove existing sync entirely
* [x] move all but basic functionality from `indexeddb.js` into `cachinglayer.js`
* [x] switch to new data format for G/P/D functionality of `remoteStorage.local`
* [x] remove duplicated non-basic functionality from `localstorage.js` and `inmemorystorage.js`
* [x] make existing tests pass 
* [x] add some more tests for the G/P/D interface
* [x] write tests for sync
* [x] write code for sync
* [x] write migration code for data format (`onupgradeneeded`)
* [x] write tests for access SEEN/SEEN_AND_FOLDERS/ALL
* [x] write code for access SEEN/SEEN_AND_FOLDERS/ALL
* [x] rename "official" revision to "common"
* [x] introduce "fetch" revision to distinguish stale child state from incoming deletion state
* [x] add sync.resolveConflict() function
* [x] add local.flush() function