Reliably stripping (multiple) archive extensions (e.g. .tar.gz) is not supported
by std::filesystem::path. Dots in the regular root folder name can cause issues.
fileformats.hpp adds well-known format extensions which are used for stripping
the extension.
Note that this is not used by libarchive or xwim to determine the
filters/formats for extraction. This is done by libarchive's `bidding`.
Entries in libarchive archives are forward iterate only. Entries are owned by
the current archive. Reading the next header can hence invalidate the current
entry.
ArchiveEntrySys was replaced by ArchiveEntryView. ArchiveEntryView now only
guarantees a temporary view of the currently active archive entry.