Mod and mod-mounting cleanup and improvements.
- Non-visual replays now automatically try to load the replay mods. This removes the annoyance that -mod=public usually had to be passed.
- MountMods is no longer called in InitVfs but later, making it possible to load the game in one pass & simplifying things considerably.
- Explicitly ignore duplicates when loading mods
- Interface cleanup: failed mods and incompatible mods were redundant, only incompatible mods is kept.
- Interface cleanup: AreModsCompatiblebecomes CheckForIncompatibleMods, which becomes a private pure function, simplifying the control flow somewhat.
- Interface cleanup: CheckAndEnableMods is just EnableMods, which explicitly updates loaded & incompatible mods.
- CacheEnabledModVersions becomes private and is called on behalf of the user, removing the need to be careful about updating that (fixes my concern at rP21823)
Overall, the logic around mounting & enabled mods should be easier to understand.
Differential Revision: https://code.wildfiregames.com/D3982