Apply explicit executable settings to recursive directory leaves so directory sources behave like documented file sources.
In particular support source files whose name start with `.` or contain characters not allowed in the nix store, such as spaces. Also add some test cases for `home.file`.