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.
I didn't want to pollute the proto.Value struct with something so absolutely limited to the MVCC layer, but I think maybe the benefits outweigh the costs here. What I'm going to do is create a proto.MVCCValue message which has an optional proto.Value and a Deleted flag. That should serialize to disk incredibly efficiently and also prevent "leakage" of the deleted state into the rest of the code which uses proto.Value.