Added garbage collection mechanism via RocksDB compaction

Summary:
Using the V2 compaction facility of RocksDB, cockroach now has a
pathway where a sequence of adjacent MVCC rows may be GC'd
according to several (currently, maybe more later) mechanisms:

 - Transaction rows will be GC'd based on a minimum system-wide
   write intent timestamp which is periodically computed via map-
   reduce and gossipped.

 - Response cache rows for idempotent responses are GC'd on the
   hour (configurable via a Go constant at the moment).

 - Other MVCC rows will be compacted based on the zone they're in.
   I anticipate we'll have the policy specified via the zone config
   using a configurable choice between the union or intersection of
   maximum number of values and maximum age of values.

A GC factory can be set for an Engine. This is a bit awkward, but
very useful for unittests. Also, I've done some shuffling with
whether or not we pass clocks into range-controlled data structures.
I discovered most of them are happy to just use timestamps on method
calls, which is better.

Test Plan: go test

Reviewers: petermattis, mrtracy, jiangmingyang, andybons, bdarnell

Reviewed By: jiangmingyang, bdarnell

Subscribers: team

Differential Revision: http://phabricator.cockroachdb.org/D142