Added property FdbDatabase.Directory to attach a global directory on a database instance

- db.UseDirectory(..., ...)
- db.Directory.CreateOrOpenAsync(...)
Updated DirectoryLayer

- Most async methods accept a CancellationToken
- Changed RemoveAsync to return true/false (and not throw if not found)
- Fixed ArgNullEx in RemoveAsync
Renamed db.Directory to db.Root, and changed into a FdbRootDirectory that wraps the Directory and the database

- db.Root.CreateOrOpenAsync(("Foo"), ...)
- By default mapped to use the default directory location
Fix problem when calling ClearRange(StartWith(key)) if key is equal to the GlobalSpace prefix

- StartWith(GlobalSpace.Key) calls FdbKey.Increment(...) and so returns a key that is outside the allowed keys.
- When we now it is safe, we will allow that key to be used
- Now db.ClearRangeAsync(db.GlobalSpace) should work