Rework mandatory plugin loading

As discussed with Hugo there's a question about whether we should be loading plugins or commands at all here but I've tried to make it easier to see what is happening and to add new mandatory plugins.

Apologies for the explicit loops, I might try and fix that at some point. forEach failed the tests.
I don't think the negligible performance improvement of not having one more temporary variable to hold the length outweighs the confusion of loading the patches in the reverse order from what it seems looking at the list.