Throw std::runtime_error for all esplugin errors except ESP_ERROR_PLUGIN_METADATA_NOT_FOUND, which causes a PluginNotLoadedError to be thrown, since LOOT needs to be able to distinguish that error.
windows-2019 will be fully retired by the end of June, and 2025 is the latest version.
This means that Windows build artifacts will be built using MSVC 2022, not MSVC 2019. They should be ABI-compatible across this change, since they expose no third-party types and Microsoft say that their compiler and standard library didn't break ABI between 2019 and 2022, but a newer version of the redistributable might be needed.
This reverts commit d058d34bca.
Although it was reported that loading a master file after a non-master
that touched the same record can cause issues, forcing all masters to
load before non-masters is too restrictive and breaks the ability to
load any mod that uses a master file, since that would force it to load
before the official DLC plugins and so break the ability to load the
game.
It didn't work because it didn't have the right target directories listed, but even with the right directories it wouldn't work because they get wiped by CMake when it starts building.
Although the game doesn't require master files to load before non-master files, if they load after that can apparently cause issues, so make LOOT sort master files first.
UV's use of a lockfile makes building the docs more reliable, and it installs the dependencies faster too (though in CI that's largely hidden by having to install Doxygen every time).