Trying to remove API that returns the 'key' of a KV serialized into a byte array is thorny.
I tried to move over the first and last key serializations and the hfile index entries to be cell but patch was turning massive. Here is a smaller patch that just redoes the optimization that tries to find 'short' midpoints between last key of last block and first key of next block so it is Cell-based rather than byte array based (presuming Keys serialized in a certain way). Adds unit tests which we didn't have before.
Also remove CellKey. Not needed... at least not yet. Its just utility for toString.