Lazy-load selected columns for current row state

Before, we were loading all the columns of the row into memory.
This could be wildly inefficient as we just care about a small
subset of the columns (usually) for indexing. Now, we just load the
columns the user requests per-index, on demand.

This lead to an issue (esp when combined with the local HRegion reads)
where two KVs with the same row-key (r,f,q,ts) would sort in the wrong
order based on memstore timestamp. Resolved this with a custom KV
comparator that always sorts the pending updates (as PendingKeyValue)
before regular keyvalues, in the case that everything is the same.

Really, we should probably also rip out the ExposedMemStore and go
with a cleaner, simpler implementation. That's a V2 thing, but adding
comments to this effect.
Add closing to scanners.

Scanners were not being closed, causing a resource leak on the
underlying MemStore. While this was fine for short operations
(the ExposedMemStore was the only reference and it was let go after
building the index updates for each mutation), it could be an issue
for longer operations or operations that need to create a lot of
scanners (e.g. lots of indexes).

Now the scanners are allowed to be GC'ed.