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?
mvcc.Scan is to return the results within the key range (startKey, endKey).

if we use an arbitrary key  (may not be a mvcc metadata key K1) as the start key for a mvcc scan, the expectation of the scan result is to return the "next" metadata key K2 in which K2>start key K1.

To return metadata key (assume K3) of K1 will violate the condition of key range since K3 < start key K1.

For range splitting, it should does not matter to use K2 or K3 as the split key. You may argue to decode K1 and get K3 will be more efficient. But it didn't save too much since we have already scanned whole range in order to find the right candidate K1. Having another scan to find K2 won't be a big additional cost and reduce some complexity.