Tuples: changed API to support embedded tuples

- You can now embed a tuple inside another tuple: (A, (B, C), D) is a tuple of size 3
- tuple.Append(...) always add the value as a single item, so (A, B).Append((C,D)) returns (A, B, (C, D))
- tuple.Concat(...) should be used for merging items, so that (A,B).Concat((C,D)) return (A, B, C, D)
- Moved Last<T> as an extension method, and added First<T>
- this will BREAK your code if you relied on the undefined behavior of appending tuples to merge items !!
- Need more unit tests!
Tuple: preliminary support for packing and unpacked embedded tuples

- Embedded tuples start with header <03> and end with footer <04>
- Parsing of embedded is deferred, but we still need to recursively scan the tokens
- Need more unit tests !
Tuples: fixed handle of ITupleFormattable

- Serialized as an embedded tuple, with <03>...<04> as delimiters
- removed subspace.Pack(ITupleFormattable) because it overlaps with Pack<T>(...)
Fix FdbSubspace.Partition() with 3 and 4 values

Was internaly calling  FdbSubspace.Partition(tuple(value1,value2,value3))
Fix typo in FdbKeySelectorPair DebuggerDisplay
Subspace: added ExtractAndCheck() and ToRange() methods on the IFdbSubspace interface
Organized projects using Solution Folders
NuGet: changed from MS.Bcl.immutable 1.1.29 to the new name System.Collection.Immutable 1.1.32

- note: only impacts experimental in memory db
AsyncLinq: added Distinct(), MinAsync(), MaxAsync(), ElementAtAsync(), and ElementAtOrDefaultAsync()
AsyncLinq: added some [NotNull] and cleaned up spaces
Merge remote-tracking branch 'upstream/master'
Merge remote-tracking branch 'upstream/master'
Merge remote-tracking branch 'origin/master'