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.
Everything is correct up the the point where you mention args.PusheeTxn.Status should be proto.ABORTING. Just to be clear, there's not "ABORTING" status. Just "ABORTED".

The PusheeTxn passed as an argument to InternalPushTxn comes from a write intent. Write intents never have Status == ABORTED. If they did, they wouldn't be a write intent. That's why we sanity check here to ensure the intent status is _always_ PENDING.