Store value protobuf directly for MVCC values

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.
The only reason we call InitChecksum here is that there's no way for the original client to set it themselves, as they're passing in a protobuf message, not a proto.Value with room for a pre-computed checksum. We might instead widen the definition of this method to include a checksum parameter, but this is probably fine, as it's only used internally, so from the same process, with little chance of errant corruption.