WIP transactional DB
WIP on transactional kv.DB.
Unittests under development.
Transactional client for node-internal use.

This is essentially the first implementation of a cockroach client, though
it's for node-internal use only. It'll be used for range splitting first,
and then eventually for message queues, structured data index maintenance,
etc.

This client uses the kv.KV abstraction to proxy all commands to a wrapped
distKV or localKV instance. In the process, the request's Header values are
populated to update the commit timestamp and current transaction. Responses
are examined to get newest values for commit timestamp and to handle various
error conditions which require transaction restart or abort & retry.

Added explicit UserPriority to proto.RequestHeader. This allows non-txn
commands to specify a user priority. It was necessary to fix a non-
deterministic unittest failure but also was something I intended to add
eventually anyway.
Reverted a change which removed the RunTransaction method from the
storage.DB interface. Unfortunately, that was a mistake.
add TODO item
Add etcd as a submodule so we can use its raft implementation.

This commit adds the dependency without really using it so we can make
sure that the submodule process works for everyone without causing
problems. Everyone will need to `git submodule update --init`
after pulling this commit.

Note that we use the import path 'coreos/etcd' but create the submodule
from 'cockroachdb/etcd'. This allows us to maintain and use our own
changes without waiting for everything to be merged upstream by etcd.
We keep the import path because otherwise raft internally uses multiple
packages and we don't want to rewrite its internal imports.
Merge pull request #77 from bdarnell/etcd-raft

Add etcd as a submodule so we can use its raft implementation.
Respond to Jiang-Ming's and Tobias' comments.
Merge pull request #75 from cockroachdb/spencerkimball/txn-db-impl

Transactional client for node-internal use
add InternalSplit command