(MCOP-12) Refactor util.puppet_agent_mgr to improve specs

Avoiding issues related to conditional requires when executing rspec tests;
implement a class hierarchy for the puppet agent manager.

The puppet agent manager logic is now implement with a class hierarchy to
deal with different Puppet versions and platforms; before, we were relying
on dynamic imports of modules to load the right logic. This should reduce
code duplication and make the tests more robust.