MemoryDB: started work to refactor the range iterator into a separate class
Misc things to make Code Analysis happy
Tests: Updated Json.NET package to 6.0.3
Core API: Added Fdb.UseApiVersion(...) and added more explicit error message when SelectApiVersion fails

- People can ask for a specific API version by calling UseApiVersion(..) before start. If not, uses the default API version target (currently 200)
- If API select fail, error message will contains details on the min/max versions supported by the binding.
Build script: set NUnit timeout to 10 minutes, and kill nunit-agent.exe when its done
Marked some unit test as LongRunning, fixed timeout for nunit runner
Added a few system keys and helper methods to Fdb.System
LINQ: added unit tests to reproduce bug with Take(N).LastAsync() and added scaffolding to Skip(..) (not implemented)

- LastAsync() does not work with Take(..) because it reverses the source range, without checking for the limit
- Skip(...) would need to add an offset to the start key, or endKey if Reverse() has been called!
Fixed test Test_FdbKey_Constants()
MemoryDB: Added USlice.Equal(obj) and USlice.GetHashCode() methods
MemoryDB: removed db.LoadSnapshotAsync(..) because overwriting an existing db instance is too dangerous

- must use MemoryDatabase.LoadFromAsync(...) instead
MemoryDB: refactoring on the memory layout of keys and values (work in progress) and heap allocation strategy

- Reduce the size of the flags to make more room in keys and values
- Use buckets for different page size in the heap
- Added default System Keys in new empty dbs
Fix for a weird Roslyn compilation bug that breaks tuple encoding of string with NUL chars

- If the call to WriteNulEscapedBytes(...) is outside the fixed statement, it is not present in the generated IL code for the method (!?)
First step to fixing bug with Take(N).Reversed() and initial implementation of Skip()

- still need to fix possible range overflow bug
Added failing test for GetRange() + Take() + Reversed() that should not overflow
Fix Test_Can_Bulk_Insert_Raw_Data() unit test that was failing on slow hosts

- need to wait for the last progress notification, because it is invoked asynchronously
- added a note in the XML docs to remind that progress.Report(x) may be called after the task has completed
FdbKeySelector now implements IEquatable<FdbKeySelector> as well as the == and != operators
Added a bound check step in range queries when the currents bounds are not equal to the original range.

- call GetKeys(...) to resolve to actual keys, and bound check them before starting the range read.
- this should fix the overflow bug for non typical queries that mix Take(), Skip() and Reverse()
Fixed intermitent failure in FdbCounter

- needs to use the Rng under a lock (not thread-safe!)
- coalesce thread was not resetting the flag to 0 if it failed to start
Common Layers: [BREAKING CHANGE] renamed FdbTable to FdbMap and moved to namespace FoundationDB.Layers.Collections

- Tables have rows and columns, Maps avec keys and values
- Frees up the name "Table" for an actual layer about rows or column oriented tables.
- How to fix this breaking change: search/replace "FdbTable" to "FdbMap" and "FoundationDB.Layers.Tables" to "FoundationDB.Layers.Collections"