Loader plugins: Stage 1
*This is a draft, since we're not ready to merge yet.
Before this gets merged we'll also need to merge develop into release, since we will probably want to support pre-plugins while we're ironing out bugs in plugins.
I'm primarily opening this now to more easily see the absolute changes that this makes against pre-plugins.
Loader Plugins Stage 1 (this PR) means that all mod loading, mod solving, the core plugin loop, and error handling are finished. In addition both quilt and fabric mods are loaded by their respective plugins, and those plugins are part of quilt-loader itself. External (additional) plugins can't be loaded yet, however the api for them should be very nearly ready.
Future stages (not in this PR) will bring:
- Loading plugins from mods (sooner rather than later)
- Unloading mismatched plugin versions (hopefully, this can get quite complex though).
- Multi-thread support for plugin tasks
- A file replacement & moving system, to allow plugins that update mods to work well in loader itself.
- A proper abstract gui system, to allow said updater plugins to ask the user about what they're doing before doing it. (And for dep downloading in the future)
- Tentative load option support (for dep downloading, the core isn't not fully implemented ATM)