[Review only] Remove Puppet from core

This is _definitely_ not ready for merging yet ;)

It's a first pass at the puppet removal, and it passes all tests locally, although I've not manually tested it extensively yet. We'll see what Jenkins says.

I have a few tasks left to do, and a few questions for the team. The main item still on my todo list is to convert fact_values and report uploads to JSON to get away from YAML - the smart-proxy (which will still load puppet) can do the YAML->JSON conversion before uploading, and only needs to accept YAML from localhost.

Open questions:

* The new files in lib/ might not be needed once we have a JSON report format, but for now, does this seem a sensible approach? It's the smallest amount of reverse-engineering I could get away with from Puppet's report classes to make the tests work
* Is the extra initializer config needed, or should the new files in lib/ autoload? Should they even be in lib/ or somewhere in app?
* The two deleted test files relate mostly to puppet settings and seemed unnecessary - is that correct, or are there tests that need to be saved

Other review thoughts welcome too ;)