(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.
The `private` statement only affects instance methods:

```
[2] pry(main)> class Foo
[2] pry(main)*   private
[2] pry(main)*   def self.should_be_private
[2] pry(main)*     "RIGHT?"
[2] pry(main)*   end  
[2] pry(main)* end  
=> nil
[3] pry(main)> Foo.should_be_private
=> "RIGHT?"
```