- Unify filename.h and file_utilities.h under filesystem.h.
- Rename Filename class to Path since it more accurately represents
it.
- Make its interface as close as possible to that of std::filesystem::path.
- Remove unused method expandWithDefault.
- Rename useAsDefault to replaceExtension since it was only used in the
purpose of replacing extension.
- Unroll the split method in the constructor.