Use full txn struct instead of just txn ID

Move from dealing with just transaction ID to using the full transaction
struct in write intents and in request / response headers.

Cleaned up some code in MVCC that was unnecessarily complex and introduced
concept of transaction epochs for Put() and for ResolveIntent(). Transaction
epochs start at 0 and are incremented every time a transaction is retried.
Transactions are retried (instead of aborted) in the event that a value is
encountered within the "window of uncertainty" between RequestHeader.Timestamp
and RequestHeader.MaxTimestamp, or in the case of an SSI transaction, if
the final transaction timestamp is not equal to the initial transaction
timestamp.

Typically, when a transaction has to restart, it covers all of the same
keys on writes and increments the intents' epochs accordingly. However,
if there's conditional logic in the transaction, it might end up skipping
some keys which were written the previous run--those earlier intents should
then not be committed when the intents are resolved after txn commit.
Adding a comment outlining this example.

There are big advantages to keeping same transaction. Keep in mind that most retries will involve the same keys or nearly the same keys. It's unusual txn logic which would end up with largely different write key sets. The intents already laid down act as lease-locks on the affected keys so we're much less likely to retry twice as if the txn has a high enough priority, readers encountering its intents will have to backoff and retry instead of being able to push the txn. Further, changing the txn ID would cause us to do a lot more writes: we need to abort-resolve the old ones, and rewrite them with new txn ID.

A particularly bad case would be if the 1st txn's coordinator isn't the same as the 2nd's (let's say the 1st coordinator died), then all of the writes to same keys in 2nd run of the txn are going to run into the 1st txn's intents and go through latency-intensive process of resolving those intents on the fly.