Refactor MemoryStore Interface to be async

* `at` now takes a callback
* Added `range` function for returning multiple buffer chunks at once
  (also async)
Tweak Redis classes; Add support for plugging in buffer stores

* Split Redis client connection and the config logic into separate classes
* Add support for passing different stores into the RewindBuffer, even
  though we may not add any new stores right now
WIP on the RewindBuffer periodic dumper

Intended to save the RewindBuffer to disk at intervals, to give us a
buffer to start back from after a crash or non-graceful restart.

* Dump support is implemented
* Restore is not yet implemented