do not build main binary for tests
Merge pull request #67 from tschottdorf/mktest

do not build main binary for tests
Adding unit tests to kv/local_kv_test.go

Generalizing gossip network simulation so that it can be used to test gossip networks more broadly

Adding unit tests for kv/dist_kv.go and fix user permission bug in
storage/prefix.go caught by the tests
Merge pull request #63 from embark/kathy/kv_test_coverage

Improving kv test coverage
Give all replicas of a range the same Range ID

Previously, the range ID was chosen as unique / store for every new range
replica created on a store. This means that there was previously no way
to refer to a Raft consensus group by ID. The only way would have been to
use StartKey->EndKey.

Now, ranges are allocated from a global id allocator in blocks by stores.
When new ranges are created, an ID is taken from the pre-alloc'd block.

Range ID has now been moved out of proto.Replica and moved into RangeDescriptor.
Replica no only specifies NodeID and StoreID, which is enough information to
locate the device where a replica of the range can be found.

RangeID was not needed in RangeMetadata, so was removed from there.
Also, ZoneConfig.Replicas was renamed ZoneConfig.ReplicaAttrs to eliminate
confusion.
Added a test for allocation of successive blocks of range IDs.
After some reflection and discussion with Ben, re-introduced the
RangeID into the proto.Replica description. We decided it would be
a mistake to lose an exact, unique description of a particular range
replica, which we get via proto.Replica. It consists of three IDs
which together are a unique identifier: NodeID, StoreID, RangeID.

To help with debugging and make things simpler to reason about,
introduced a new "RaftID" which is defined at the level of
proto.RangeDescriptor.