Add engine.Key.Address() method for addressing local keys.

Local keys are keys which are located on the same range as other keys
minus a local key prefix. Local key prefixes take the form:
"\x00\x00\x00[4 characters]". Any commands addressed to keys of this
form are direct to the range containing the same key minus the prefix.
Transaction records, response cache entries, range metadata (and
in the future others) all have local keys.

Changed cases where we write directly to the underlying engine to use
binary-encoded keys. Now that we binary encode all keys, need to pass
correct prefixes to the C++ custom compaction filter for GC. In this
way, we avoid having C++ need implementations of our decoding methods.

Moved a number of methods into methods of struct engine.Key. Added
associated unittests.
Since we're now using random values, we are triggering snappy to disable
compression. Make this test more flexible and allow it to assume
compression will be disabled due to random value input.
Updates for Tobias' comments. Added key checking to the REST API.
backed out changes to rest.go--this permission check is done automatically in dist_kv.go and system keys will only be accessible to user root
Merge pull request #100 from cockroachdb/spencerkimball/proto-key

Add engine.Key.Address() method for addressing local keys.
Merge pull request #101 from cockroachdb/spencerkimball/approx-size

Since we're now using random values, we are triggering snappy to disable
Replace coordinator's naive slice of keys with an interval tree.

In many instances, txns were sending 3-4 identical resolve intents.
Seemed worthwhile to make this change.

Also, over the course of debugging, I noticed that we were keeping way
too many timestamp entries in the timestamp cache. This change also
includes code to keep that cache pruned on inserts so it should be
much more memory-efficient now.

Finally, I noticed a bug in the interval tree implementation from biogo.
This change works around it by pruning the timestamp cache, but this is
pretty serious and I've mailed the biogo user group and will get it
resolved one way or another.
Merge pull request #103 from cockroachdb/spencerkimball/interval-cache-for-intent-keys

Replace coordinator's naive slice of keys with an interval tree.
fix some `go vet` errors
remove double spaces after full stop in comments
replace `go vet` by `go tool vet`: the latter works with files from different packages
Merge pull request #107 from tschottdorf/vetsyntax

A couple of no-brainer style fixes
Address Ben's feedback from PR #100
address Tobias' comments
Merge pull request #105 from cockroachdb/spencerkimball/address-bens-comments

Address Ben's feedback from PR #100
Enforce key length constraint of 2048 bytes.

Aside from needing to enforce a constraint of some sort, this change
allows us to definitively specify KeyMax, removing the previous requirement
that keys stored in the map couldn't start with \xff.
Addressed Tobias feedback, increased key size limit to 4096
Merge pull request #106 from cockroachdb/spencerkimball/enforce-key-length

Enforce key length constraint of 4096 bytes.
Address Pete and Jiang-Ming's feedback on maximum key length change.
Make the build self-contained