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?
Since this method doesn't return an error, I think it's fine to panic. Just ignoring the problem would cause worse issues. Is there some way this could now be used with pernicious inputs?

Overall, I'm not convinced there's a reason to return an error here, but let me know if you think we should and why.