Allow operations to cross range boundaries

 * add proto.Combinable interface

Combinable is implemented by responses whose requests may access multiple ranges,
such as {Scan,DeleteRange}Response and allows multiple responses to be merged
into a single one transparently.

* allow multi-range Scan and DeleteRange

adapted the distributed sender to split such requests up
and adress them to the individual ranges.
The Combinable interface is used to create a single response
from those parts which is returned with the client.Call.

not at this point, but see the TODO in txn_coord_sender. We'll make sure there to automatically wrap commands which may span ranges in a txn there soon.
Most requests won't span ranges, and so where we don't need it we'll optimize away the txn eventually anyways (so that they commit in a single atomic operation thanks to RocksDB batching).