[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.

EDIT:

Since this is a fairly long review, and doesn't include reports yet, I'm changing strategy - rebasing this to only have the changes to the facts API, which leaves Puppet in core for reports. Reports will come in a separate, unrelated PR.