Nooooo!!!!

This is a great change, and thankyou for it, but please never ever manually convert coffeescript to javascript yourself again. You should use the coffeescript compiler, then clean up the coffeescript compiler's output afterwards, only making changes that keep the code semantically identical. (It sometimes pays to fiddle with the coffeescript before compiling, to keep it clean.) As you make changes, you can keep rerunning the tests, and they should keep passing the whole time.

I should have asked you to do that as soon as you made this pull request and I saw that you did it manually. I think the work of redoing it all would have been worth it to avoid the typos you've added, which make me *so* nervous. I mean, livedb has tests, but the code is still in flux so I've kept the test coverage way less than 100%.

Right here you quietly dropped the `do (cName, docName, from) ->` wrapper that I had in coffeescript. Without that, the outer `for (i in redisResults)` loop *might* change `cName` and `docName` before this closure is called. As a result, when we set `results[cName][docName] = ops;`, you might be using incorrect values of cName and docName. This will only show up when doing a bulk fetch with multiple values missing from redis.

I'm adding a test and fixing this for now... but the thing that makes me scared is that I only noticed because I happened to glance at the code. I hope there aren't too many more typos like this, but I suspect there are and I don't look forward to tripping over them all.