Introduce the Read-Timestamp cache, as described in the design document.

Summary:
It uses an interval tree cache to keep track of key ranges which have been
recently read. It also maintains a "high water mark", used as the default
answer for how recently a key has been read in the event that no other
information is available, either because the key hasn't been read within
the process' lifetime or a prior read for the key has already been evicted
from the cache. The high water mark is initialized to the current time +
the maximum clock skew to ensure that at startup, the cache will never
respond with a too-early timestamp for the most recent read of a key or
key range. This is necessary for correctness.

The system uses the read-timestamp-cache to prevent transaction writes
from writing to any key whose value has already been read at a later
timestamp. If this were allowed, then transactions would in effect be
allowed to rewrite history.

Test Plan: go test

Reviewers: Tobias, petermattis, andybons, bdarnell

Reviewed By: bdarnell

Subscribers: team

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