Directory Layer: added CheckLayer and ChangeLayerAsync to the IFdbDirectory interface, added TryCreateOrOpenAsync()

- simplifiy init logic that needs to manipulate the layer ids of existing directories
- TryCreateOrOpenAsync() takes a "readonly" bool, and calls TryOpenAsync() if true, or CreateOrOpenAsync() if false.
FDBShell: added rmdir, mkpart and layer command

- rmdir: deletes a directory (currently must be non empty)
- mkpart: creates a new partition
- layer: displays or changes the layer of the current directory
- refactored main loop into a MainAsync() so we can use await