Move Puppet run providers to plugin-capable layout
#7008 introduced the ability for modules to have providers in an extensible fashion. The 'puppet' module has the capability for Puppet runs, which should be refactored to use this so new providers can be added easily.
I'd actually suggest splitting the 'puppet' module into two, as it has two responsibilities in my eyes:
- Puppet environment and class info
- Puppet runs
The latter is the bit that needs provider support, the former not really - the two aren't exactly linked.