Provide our own C interface to rocksdb.

Stop using the rocksdb C interface and instead provide our own C
interface to rocksdb. This makes it cleaner to implement various bits of
cockroach-specific functionality in C++ such as the compaction filter
logic and merge operator.

I've started to regret making the DBBatch a different sort of object. I think we should revert to the Viewfinder model, where a batch is just another type of engine (as is snapshot) and give DBEngine a Flush() method which is normally a noop but executes a write batch in the event the engine is really a DBBatch.