Core API: [Breaking Change] Ensure that we always expose IFdbDatabase and IFdbCluster interfaces, and note the implementation classes

- FdbDatabase and FdbCluster are implementation classes that should not be exposed publicly
- Changed various OpenAsync / CreateAsync methods to return TaskIFdbDatabase> and Task<IFdbCluster>
- Moved some of the instances methods on FdbCluster and FdbDatabase into extensions methods on their respective interfaces
- Added IFdbDatabase.Contains(Slice) to test if a key is inside the allowed keyspace
- Added IFdbDatabase.get_Cluster property that returns the parent cluster object
- Refactored db.IsKeyValid() / db.EnsureKeyIsValid() has static helper methods that uses IFdbDatabase.Contains(...) to check if the key is inside the allowed keyspace
- Removed superfluous overrides of OpenDatabaseAsync() on FdbCluster
Core API: renamed property "Token" to "Cancellation" on IFdbDatabase and FdbOperationContext

- All objects that have a publicly visible CancellationToken will use the name "Cancellation" for the property
Use IFdbDatabase instead of FdbDatabase
Reduced the verbosity of some of the unit tests
Linq: Renamed the assembly "FoundationDB.Linq.dll" into "FoundationDB.Linq.Providers.dll" to prevent some misunderstandings

- This assembly contains an experimental LINQ provider that is not the same as the "Async LINQ" implementation which is in FoundationDB.Client.dll
- The current impl is still a prototype
Tweaked build scripts

- Use the version of nuget.exe that is already present in the repository (in .nuget\nuget.exe)
- Renamed step to build nuget packages to "BuildNuget" and added dependencies to do clean/build before
Bumped version to 0.200.6-pre
Core API: refactored the different versions of Partition(...), Concat(..) and Pack(..) into a single set of extension methods on IFdbSubspace

- IFdbSuspace implements IFdbKey (needed to resolve some type ambiguities with IFdbTuple that also implements IFdbKey)
- All extensions methods call ToFoundationDbKey() to get the prefix
- Made IFdbDatabase implement IFdbSubspace and removed its redundant extension methods
Tuples: renamed FdbTuple.Concat<..>() methods to FdbTuple.PackWithPrefix<...>()

- Concat(..) is for joining two things with the same type
- can't be called Pack<T>(Slice prefix, T value) because of the ambiguity with Pack<T1, T2>(prefix, value) with T1=Slice and T2=T
- Added FdbTuple.Append<...>() with more than 1 value
Added SlicePairComparer that can efficiently compare key/value pairs of slice

- SlicePairComparer.Default compares both key and value
- SlicePairComparer.KeyOnly ignores the value
- SlicePairComparer.ValueOnly ignores the key