Enable / manage structured facts

This adds a parameter to manage structured facts. You can manage them separately on agent and master, but the agent defaults to being set to whatever the master is using.

The only controversial change here might be that I'm enabling structured facts (disabling stringify_facts) by default, because I want to use structured facts in the new puppet server code I'm working on. Out of the box, puppet comes with structured facts disabled. I'd be open to switching the default if people have concerns.