Queue all IDB write transactions and execute per store reusing open transactions

IndexedDB can’t handle the large number of parallel writes we throw at
it.  This de-parallelizes all writes into an operation queue that self
executes the next transaction operation when one is finished.

This speeds up login DB writing on both Chrome and FF by large margins - as well as reduces CPU and RAM usage for both browsers.

TODO:
- [ ] specs

Ideas for improvements:
- [x] de-parallelize into parallel queues per storeName
- [x] reuse write transactions per storeName while flushing