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?
another way to hide the detail of MVCC is to use scan func, e.g.:

mvcc.Scan(candidate.Key, range.endkey, 1)

it will returns you an valid mvcc metadata key. In this way, you don't need to expose MVCCDecodeKey from engine.