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.

Short answer is that's how the sql lite key encoding scheme works. In the event something is appended to the encoded key, this makes it clear where the encoded string ends. Now granted, if you use the sql lite key encoding to add what comes next, every "magic" type doesn't start with a high bit so you would still be able to know where the encoded string ended. However, the way we composite our MVCC values makes it eminently clear why it's still a good idea. Because all of the 64 bits in our timestamp value are in use, there's not much point in using the somewhat inefficient SQL Lite numeric encoding. Instead, we simply append the 8 bytes.