Added Future cancellation.
Added FutureKeyValueArray wrapper for range reads.
Added (gross) hack to munge StreamingMode enumeration so that the zero value is ITERATOR.
Added range reads, including iteration interface
Added transaction cancellation, set read version, and read/write conflict ranges.
Fixed up ReadTransaction interface (broken after last commit), added GetRange[Selector] for Snapshot
Added internal method byteSliceToPtr, which handles []byte -> *C.uint8_t while not crashing when the slice is empty. Updated everywhere in the code that handles StringRef to use this, including option setting. Can now deal with keys without values!