compute split key for range splitting

Added a method to compute a split key based on the size. To do this, I had to look at raw keys from the engine and decide whether they are an MVCC metadata key or a timestamped value and if so, find the metadata key. To do all of this, I had to expose the methods mvcc{En,De}Code and was forced to do the binary decoding/encoding of keys manually, which leaks MVCC implementation details.
@jiangmingyang Can you suggest an interface to improve on this?
Yes. Why do you think it's not?

In this example, first we lookup BinaryEncode("a"), which gets us to the metadata for "a" and we do mvcc.Get("a"). Before the loop iterates, we set nextKey = BinaryEncode("a\x00"), which is the next possible key sorting after BinaryEncode("a"). In the example, this scans us to BinaryEncode("aa"), which is the next key it finds which is greater than BinaryEncode("a\x00").

I wrote a test for this and sent you a PR.