(#3251) - add read queue to avoid leveldb corruption

With these tests I can reproduce the LevelDB race condition where it starts reading before a batch and ends reading after a batch. It only fails for `get()` and `allDocs()` - `changes()` seems fine for some reason.
I got rid of the all the event-emitting/event-listening in `_get()` because apparently it wasn't guarding against race conditions. The readlocks/writelocks are definitely a brute-force solution, but they pass the tests.