Add range metadata cache to KV store

Summary:
Commit implements `RangeMetadataCache`, a structure which uses an underlying
`OrderedCache` to cache range metadata retrieved from the server.

+ `kv.DistDB` contains a `RangeMetadataCache`, which it consults to retrieve range
metadata whenever dispatching RPCs.
+ If the needed metadata is not already cached, `RangeMetadataCache` consults a
backing `RangeMetadataDB` interface to retrieve the metadata from storage (in
the case of `DistDB`, the DistDB itself backs the cache).
+ The owner of the RangeMetadataCache is responsible for evicting metadata keys
which are determined to be stale.

Test Plan: go test

Reviewers: andybons, Tobias, spencerkimball

Reviewed By: spencerkimball

Subscribers: team

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