(#7749) Improvements to handling settings, bootstrapping puppet
Major changes include:
- support multiple config files (/etc/puppet, ~/.puppet). we no longer
use "run_mode" to determine the location of the config file.
- remove all references to application run_mode/state from defaults
- make the typing of settings a little more strict
- create a new setting type for directories, to make us a little less vulnerable to the terrible matching algorithm in FileSetting