wrap range-spanning ops in txn

added a new OpRequiresTxn error which can be returned if an operation
requires to be carried out in a Txn but is not.
Upon encountering such an error, the txn_coord_sender will re-send
the operation within a transaction.

The way in which this is done currently feels extremely clumsy and
should be improved.

implemented the proto.Combinable interface for InternalResolveIntentResponse,
which can be addressed to ranges.
Because we had agreed to keep it out of the client. Now that I see it here though and since apparently I didn't overlook a prettier solution, I'm all for doing it in the client itself, at least for now.