(PUP-2104) Add cfacter setting to enable cfacter implementation.

Adding a --cfacter setting that will replace the facter implementation
with the native facter implementation if the following conditions are
met:

* cfacter is installed
* the version of cfacter is at least 0.2.0 (not yet released).
* facter has not evaluated any facts by the time the setting is set.

To accomplish this last point, certain default setting values needed to
be delay-evaluated as they relied on facts. Therefore a :default
for a setting now accepts a Proc and calls the Proc only once when the
default value is needed.
For the sake of discussion, would it be better to have a `Puppet::Facts` class/module that handles the proper redirection of fact lookup? Does it buy us anything to move the aliasing logic out of `defaults.rb` or is this simple enough that we can leave this as-is?