InternalRangeLookup returns slice of ranges

Summary:
InternalRangeLookup has now been modified to return a slice of
`RangeDescriptors` instead of a single `RangeDescriptor`. This allows nodes to
quickly build their local range metadata caches by prefetching ranges which are
likely to be requested by the current workload.

+ The extra `RangeDescriptors` returned are currently a set of consecutive
`RangeDescriptors` immediately following the `RangeDescriptor` that was
requested.
+ The number of RangeDescriptors returned is limited by a parameter in
`InternalRangeLookupRequest`
+ Updated `RangeMetadataCache` to handle recieving multiple `RangeDescriptors`
when querying the underlying db.
+ Includes some improvements to errors thrown by the storage module when a
command is dispatched to the incorrect range - these errors now have specific
types and are explicitly retryable, as they may result from stale cached
metadata.

Test Plan: go test

Reviewers: spencerkimball, jiangmingyang

Reviewed By: spencerkimball, jiangmingyang

Subscribers: jiangmingyang, andybons, team

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