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.
Merge pull request #66 from cockroachdb/spencerkimball/range-id-is-group-id

Introduce a RaftID, move range lookup into Store from LocalKV
Implementation of InternalPushTxn operation. The details of the op are
spelled out in detail in the Range.InternalPushTxn comments and in the
api.proto comments. Unittests provides full code test coverage including
all error conditions.

Changed MVCC.ResolveWriteIntent to no longer accept a Commit parameter.
Instead, we use more of the provided Txn parameter's fields to correctly
update the MVCC metadata / versioned value. The missing piece here was
handling the case of the timestamp being pushed forward instead of just
having the underlying transaction committed or aborted. In the case of
pushing the timestamp, the MVCC metadata txn field is not set to nil,
it's just updated. We also will end up removing the versioned value with
the previous timestamp and create a new one with the updated timestamp.

Cleaned up TODO file.
Addressed Jiang-Ming's feedback.