Add support for routing all storage operations through raft.

The tests pass with this change most of the time but there are some
timing issues around the initial election and tests using IsTrueWithin,
so everything still uses noopRaft until that can be fixed.
Completely replace noopRaft with singleNodeRaft.
Make localRPCTransport thread-safe; panic on unknown errors from Accept.
Fix a race in storage tests.
Remove range ID and use raft ID instead.

The idea is we'll combine Node ID and Store ID (both int32) into a
single Raft Node ID (int64). We no longer need the extra 64 bit range
ID as it's obviated by simply utilizing the Raft ID.

There are some problems with this scheme. In particular, The same Raft
group might appear twice on the same store over time. We want to be
sure that when we add ranges, we never allow the same Raft ID twice.
In order to decide which one to delete, we'll need to keep track of
a monotonically increasing sequence number for each range on creation.
If two or more ranges exist for the same raft ID, we'll take the most
recent. Ben suggests using the commit log index of the membership
change command.
Added check for non-unique Raft IDs and more unittests
fixed formatting
fixed typo
Verify bzip2 and zlib downloads.

The bzip2 and zlib authors don't provide https links to download
releases.  However, they do provide md5sums for the releases
on their webpages.
wrap range-spanning ops in txn

added a new OpRequiresTxn error which can be returned if an operation
requires to be carried out in a Txn but is not.
Upon encountering such an error, the txn_coord_sender will re-send
the operation within a transaction.

The way in which this is done currently feels extremely clumsy and
should be improved.

implemented the proto.Combinable interface for InternalResolveIntentResponse,
which can be addressed to ranges.
update TODO
fix merge errors
Merge pull request #188 from tschottdorf/rgspntxn2

wrap range-spanning ops in txn
Merge pull request #197 from cockroachdb/spencerkimball/rm-store-range-ids

Remove range ID and use raft ID instead.
Add Go implementation of md5sum.

This is for platforms that don't ship with the md5sum utility.
update client/ docs
Add test to verify non-integer values cannot be incremented via REST

Fixes issue #78
Remove nil check for ProposeRaftCommand.
Merge branch 'use-raft'

* use-raft:
  Remove nil check for ProposeRaftCommand.
  Fix a race in storage tests.
  Make localRPCTransport thread-safe; panic on unknown errors from Accept.
  Completely replace noopRaft with singleNodeRaft.
  Add support for routing all storage operations through raft.

Conflicts:
	storage/store.go
Remove unused cruft from multiraft.

Just expose the underlying raftpb types directly instead of creating our
own wrappers.

Also clean up some obsolete todos.