clean up KeyValueDB instantiation

This cleans up some of the kinetic stuff and lays things out for rocksdb.
Shouldn't the type be encapsulated by the KeyValueDB create member function?  I think the caller would not care as long as they received an instance of something with the same interface as KeyValueDB.  But this is just a suggetion.