Rip out most of multiraft.go and replace it with etcd/raft.

This is not yet usable and the storage layer is not yet implemented,
but it's enough to pass its own limited test suite.
Merge remote-tracking branch 'origin/master' into bdarnell/raft

* origin/master:
  Rework build settings to allow raw "go" tool usage.
  Use curl instead of wget
  Added simple offset measurement between two connected nodes
  Remove and consolidate various uses of reflection.
  Make the build self-contained
  Address Pete and Jiang-Ming's feedback on maximum key length change.
  Addressed Tobias feedback, increased key size limit to 4096
  Enforce key length constraint of 2048 bytes.
  address Tobias' comments
  Address Ben's feedback from PR #100
  replace `go vet` by `go tool vet`: the latter works with files from different packages
  remove double spaces after full stop in comments
  fix some `go vet` errors
  Replace coordinator's naive slice of keys with an interval tree.
  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
  Updates for Tobias' comments. Added key checking to the REST API.
  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.
  Add engine.Key.Address() method for addressing local keys.

Conflicts:
	multiraft/clock.go
	multiraft/multiraft.go
	multiraft/storage.go
	multiraft/transport.go
Remove NodeID type alias.

etcd/raft just uses int64 for node IDs, so using our own type just
causes a lot of awkward casting.
Add a TODO comment.
Move localRPCTransport from transport.go to transport_test.go
Merge pull request #115 from bdarnell/bdarnell/raft

Rip out most of multiraft.go and replace it with etcd/raft.