IndexedDB support

Quoting @nilclass’s mailing list reply in full:

The primary problem with the indexedDB backend is that indexedDB
transactions are committed implicitly, unless a new operation is
started directly from the success callback of the previous operation
in that transaction. Due to the way remoteStorage’s storage-backend
interface is designed, that doesn’t happen though - but instead
sometimes the next operation happens asynchronously.

I currently see two alternatives to move forward:

  1. Implement custom transactions on top of the indexedDB API - that sounds like the simplest to me, but is horribly slow (There is a start
    of this implementation here:
    https://github.com/remotestorage/remotestorage.js/tree/feature/indexed-db-backend)
  2. Rewrite the “store” to implement all operations that need to be atomic in a way that they don’t have asynchronous calls in between.
    After experimenting with (1) for a while, I currently tend to do (2).
    Also I’m very much open to new ideas.