Added assembly for prototype Message Queue layer
Fixed empty Slice comparison bug and added ability to do "if (slice == null)" or "if (slice!= null)"

- Added overloads to ==, !=, .. that take Slice? arguments
- Fixed bug where Slice.Empty == Slice.Nil was returning true
- Added unit tests
Fixed some bugs when pushing to the queue, added some profiling/logging code
Merge branch 'master' into msgq
Cleaned up API for GetRange: removed GetRangeStartsWith/Inclusive, added overloads with limit and reverse

- Revomed GetRangeStartsWith(...) overloads, that can be replaced with GetRange(FdbKeyRange.StartsWith(...))
- Removes GetRangeInclusive(FdbKeySelectors)
- Added an overload to FdbRandOptions(...) that take all the arguments
- Added convenience overloads to GetRange that take a limit and an optional reverse argument (frequently used by layers)
Refactored FdbTuple.BatchPack and Merge to be more easily discoverable

- Renamed "BackPack" to "PackRange"
- FdbKey.Merge only deals with Slices (for prefix and keys)
- FdbTuple.PackRange(...) contains all the overloads that take tuples of T's as prefix and/or keys
- FdbTuple.PackBoxedRange(...) takes untyped object arrays or collections
Added Merge(...) and PackRange(...) methods on FdbSubspace

- They will use the subspace key as the prefix
- Also added FdbTuple.PackBoxedRange(Slice, ...) versions
Removed "params T[]" to resolve type resolution ambiguity

- PackRange(..., List<T>) was seen as PackRange<List<T>>(T) instead of PackRange<T>(IEnumerable<T>)
Merge branch 'master' of https://github.com/Doxense/foundationdb-dotnet-client