add store access interface to ranges

address feedback @andybons
Merge pull request #45 from tobstar87/rangeaccess

add store access interface to ranges
Rename InternalRangeScan to InternalSnapshotCopy. This eliminates some
confusion between scanning as with MVCC and doing a raw scan of engine
contents. The "snapshot copy" gives a much better idea of the proper use
and limits of this RPC.
Remove joint consensus (ProposedMembers) support.

This was present in the original raft paper but was removed from the final
thesis because simpler protections suffice as long as only one node is added
or removed at a time.

Use the term "observer" consistently for non-voting members.
Merge pull request #46 from cockroachdb/spencerkimball/rename-internal-range-scan

Rename InternalRangeScan to InternalSnapshotCopy.
Merge branch 'raft'

* raft:
  Remove joint consensus (ProposedMembers) support.
add weighted reservoir sampling (AE-S)

address feedback from @spencerkimball

final commit before merge
Merge pull request #44 from tobstar87/split

add weighted reservoir sampling (AE-S)
Fix filenames in log files.

The indirection here was causing all log lines to be reported as "log.go".
Using the glog functions more directly lets the original filename through,
at the expense of customizability.  When we make the changes that motivated
the introduction of the log package, we'll need to either revert this or
come up with another solution to preserve the caller's file/line info.
Merge pull request #48 from cockroachdb/log

Fix filenames in log files.
Also make log.V an alias for glog.V.

I left this out of my initial commit because it's more complicated
but this turns out to be necessary for --vmodule.
Instead of storing byte strings manually and manually varint encoding
integer values for incrementable keys, we now marshal and unmarshal the
Value protobuf directly. This allows us to Get incrementable keys and
to scan them. It also allows us to correctly discern an error incrementing
a key which is not a varint encoded value.

Implemented value checksums and checksum verification, although only
doing the verification now through kv/rest. Probably want to do the
same elsewhere.
fix data races
Merge pull request #51 from tobstar87/racefix

fix data races
Addressed all PR comments.

Added proto.Response.Verify method to verify checksums and now do verification
automatically on the responses of Get(), ConditionalPut() and Scan(). Also
now always initialize checksums on Put() and ConditionalPut().

Eventually we're going to want to fully expose the checksums to non-go
clients, but will have to evolve the KV API to include that capability.
Merge pull request #49 from cockroachdb/spencerkimball/mvcc-value-proto

Store value protobuf directly for MVCC values
rename RebalanceAccess->RangeManager
Merge pull request #52 from tobstar87/rangeaccess

rename RebalanceAccess
Always update timestamp cache. This correctly resolves our final commit
timestamp as we send writes to various nodes as part of a distributed
txn.

Renamed read_timestamp_cache to just timestamp_cache and updated comments
leading reader to believe it's just for reads!
Added a test to verify sort ordering for binary encoded MVCC metadata
keys and versioned value keys.