This patch is more meant as a proof-of-concept, although OTOH if there are no bigger objections, this could already be reviewed properly. The changes to the existing BLI code should be committed separately and covered well in unit tests to avoid regressions.
* Add `ghc::filesystem` to `extern/` as platform compatible replacement for `std::filesystem`.
* Add Windows specific code to avoid issues with including `Windows.h`.
* Port `storage.cc` to C++.
* Port some functions from storage.cc to use `ghc::filesystem` internally.
* General cleanup related to the changes.
Some additional things I did that could use feedback:
* Add `USE_CPP_FILESYSTEM` compile option to storage.cc, to keep legacy code around for testing.
* Add `blender::bli::filesystem` as alias for `ghc::filesystem`. That should make the `ghc` -> `std` transition easier later on since we can just change this alias.
* We could also introduce a way to switch between `std::filesystem` and `ghc::filesystem` at compile time.