Move read queue to a more general "command" queue.

Over the course of testing distributed transactions, I noticed many
unnecessary restarts on SERIALIZABLE transactions due to the fact
that we previously were always updating the range's timestamp cache
as soon as a read or a write command arrived. For reads or writes
which conflict with an ongoing transaction, the update to the timestamp
cache would happen regardless of whether the read or write succeeded.
In many cases, the read or write would fail on the conflict, so the
restart due to advancing timestamp cache ended up being unnecessary.

This change blends both read/write and read-only commands into a
single command queue, which operates similarly to the old read queue,
only now commands always wait on preceding commands which overlap the
same key(s). Read-only commands don't need to wait on other
read-only commands, so we exempt this case for better read concurrency.

This allows us to wait until after the command is executed to update
the timestamp cache, so we can avoid updating the cache on failures.
Store MD5 of txn ID with timestamp cache.

Another problem I discovered with SERIALIZABLE transactions was unnecessary
restarts with a pattern like: read("a"), write("a"). The issue was that
the read would put a timestamp in the timestamp cache for "a". Then the
write would arrive for the same transaction and be forced to increment
the timestamp it found there (you're not supposed to change past history).

However, there's no reason to do the increment if the most recent entry
in the timestamp cache was the result of the current transaction. The
addition of the txn ID (well md5 of it anyway) to the timestamp cache
lets us ignore max entries which our own transaction was responsible for.

Also, changed "high water timestamp" in the timestamp cache to the more
accurate "low water timestamp".
Address Tobias' feedback comments.
Respond to ben's comments
Merge pull request #81 from cockroachdb/spencerkimball/command-queue

Move read queue to a more general "command" queue.