Directory Layer: always store the layer, added ChangeLayerAsync

- The layer is always stored (empty string if not specified)
- Fixed CheckLayer(...) to fail if calling CheckLayer("foo") on folder that has no layer specified
- Added ChangeLayerAsync(...) to change the layer of an existing directory (usefull for upgrading/migrating)
- added tests for these changes