Batch writes

Batch writes together automatically, without changing the API. Fixes #301.

TODO: add tests that try to confuse the queue in various ways. So far I just did a quick sanity check and ran `grunt test:local`

Sorry for adding so many private funtions on the asyncStorage object, let me know if there's a better way to do this.

I hope this is more or less what you were expecting, there are obviously other ways to architect the code. I'll be happy to change it if you point me to examples of what it should look like.