(PUP-1839) Re-deprecate set_value

The set_value method really is deprecated.
(PUP-1839) Introduce overridden defaults

The previous behavior of setting the value of a configuration setting
was that the value only took effect if a user had not specified a value
for that setting on the command line. This caused lots of confusion and
some unsafe situations where the puppet code tries to override a setting
in order to continue.

This changes the precedence of setting values so that anything set in
the code is higher precedence than the cli values. In order to allow
overriding the defaults that are determined by hooks on settings, this
also adds in an `override_default(setting_name, value)` method so that
the hooks can create new defaults.
(PUP-1839) Override settings by just assigning

Now that the `:memory` level of settings is higher precedence than the
cli level, this can now simply set the confdir, vardir, and certname in
a very normal manner.
Merge pull request #2417 from zaphod42/issue/master/pup-1839-incorrect-settings-when-using-puppet-device

(PUP-1839) Introduce overridden defaults