Transactionals: Added a version of db.WriteAsync() that takes an async lambda to prevent a frequent misuse

- Passing a Func<.., Task> to WriteAsync(..) does not fail at compile time, and cause problems at runtime.
- Added a version of WriteAsync that task a Func<..., Task> in order to prevent that
- Added comments and a few missing nullchecks
Experimental: added IFdbSubspace interface on IFdbDatabase

- DO NOT USE YET! the IFdbSubspace interface is still a work in progress
Directory Layer: added missing override of FdbDirectoryLayer.Create() that can take a custom nodeSubspace
Added more console info when invalids arguments are passed to Samples.exe
Update README.md

Fixed typos, updated target version, ...
Directory Layer: disallow changing the layer id of a partition + fixed error messages
Merge remote-tracking branch 'origin/master'