15472 - rewrite puppet agent

A new Puppet Agent that has major new feature support including but not
limited to:

  * noop runs or no-noop runs
  * limiting runs to certain tags
  * splay, no splay, splaylimits
  * specifying a custom environment
  * specifying a custom master host and port
  * Puppet 3 features like lock messages when disabling
  * Use the new summary plugins to provide convenient summaries where appropriate
  * Use the new validation plugins to provider richer input validation and better errors
  * Data sources for the current puppet agent status and the status of the most recent run

This includes a library to abstract the Puppet 2.7 and 3 locking, pids,
status files and other related files into a single unified ruby API.

There are not yet any clients provided this will be a second cycle of
work.