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.
This re-declares the `i` variable, because they're function-scoped.