SystemInitializerFull and SystemInitializerTest currently have copy-pasted content that is constantly going out of sync as people
only update one of them when they add a new subsystem.
This adds a SystemInitializerAllPlugins that initialises all the plugin subsystems which is the shared code between these
two initialisers (The "full" initializer also initialises the interpreters and JIT on top of that). This gets rid of all the copy-pasted
The "AllPlugins" is a bit of a misnomer at the moment as we still initialise the Debugger which isn't technically a plugin.
I had to restructure the CMake code in the Initializer subfolder into two subfolders as we would otherwise have to work around
LLVM's 'unknown source file' CMake check.