Moved Fdb.Options into a separate file
Fixed Slice.CompareTo with empty/nil slices, added FdbKeyRange.Test
Key/Value validation and error handling

- ValidateKey/ValidateValue returns exception of null
- EnsureXXXIsValid throws this exception if not null
- Added Fdb.Errors static class to handle formatting error message
- Will allow easier localization of error messages at a later time
Added a very basic logging system

- Uses TraceSource "FoundationDB.Client"
- Configured via app.config
Started work on "multi-db" / "multi-tenancy" / "partitionning" of a database connection [WiP]

- Added a global "Namespace" tuple per FdbDatabase instance, that is the root of all keys
- Any attempt to get/set/clear a key outside of this will trigger an error
- Users should create subspaces by calling "db.Partition('Foo')" instead of  "new FdbSubspace('Foo')
- RestristedKeySpace will clip to the global namespace
Added a CancellationTokenSource per FdbTransaction (linked to the database) [WiP]
Added FdbKeySelectorPair and refactored GetRange(...) to use it

- wraps two key selectors into one struct
Added prototype implementation of a MergeSort on multiple ranges [WiP]

- Takes a list of range queries
- Run them in parallel, and perform a mergesort on the keys
- Support limit, key selector, and value transform
- typical usage would be: tr.MergeSort(list_of_ranges, (slice) => extract_sort_key).Take(10).Select(kvp => parse_value(kvp.Value).ToListAsync()
- requires that key ordering is being conserved between keys as Slice and extracted sort keys
Added ClearRangeAsync on FdbDatabase, to test how to emulate the @transactional attribute in python's binding