A whole bunch of update to support OCC

* Fixed a bug in SortedTable::remove and UnsortedTable::remove
  where iterators are not moving forward.

* Updating VersionedRow does not update its version. Version is
  only updated when doing writes and deletes to staging area.

* table_row_pair renamed to TableRowPair (struct -> class).
  Dynamically decide whether to compare Row* according to its
  pointer value (when finding the exact row pointer) or its
  content (when doing range query according to key columns).

* Use unordered_multimap for updates_ set. It's better than
  storing a vector as value.

* Above all, tracking versions in TxnOCC.

However, there's an unsolved issue: removes in OCC.

It's possible that Txn1 is still trying to read some Row when
it is being removed in a commiting Txn2. This will SEGFAULT our
program.

I don't have a clear solution now. It seems to me that the solution
could be:

1. Reference counting on VersionedRow.
2. Use reader lock for read/write, and writer lock for remove.