SERVER-13635 Add a new set of KVEngine implementation files to
storage/kv/dictionary to give engine authors another option for
code reuse.

The KVEngineImpl uses two classes, KVRecordStore and KVSortedDataImpl,
to implement the standard KVEngine API while delegating actually storage
responsibilies to a new virtual class, KVDictionary. This means a
minimal engine can be written by implementing just a dictinoary and a
transaction API.

The main motivation here is that many storage engines are based on a sorted key
value dictionary anyway, so most of the code to implement a record store and
a sorted data interface would end up being the same.

Included in this commit is a transient KVDictionary implementation
(storage/kv_heap) that is used to test the new storage/kv/dictionary code.
Also, each of the KVEngine, SortedDataInterface, and RecordStore classes
implemented here have unit tests that hook up to their respective test
harnesses.

The kv_heap engine currently fails all tests that do rename, since a
rename first closes the source collection and reopens it with a new
name. This will lose all of the old data, since the engine is transient.
Other than that, the kv_heap engine passes core js tests and unit tests.