Refactor plugin system to use DI instead of new operators

I just wanted to give a quick heads up that I’m going to do going to see how far I can take this sprint. I’m going to start with doing similar refactorings like and then go from there and see what we can do.

[original thread by Josh Pinkney]