(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.
(PUP-1846) File content diffing should respect loglevel

The current behavior is to log all diff output on file content changes
(if show_diff is set) at the info level, rather than the loglevel of the
resource.

This change alters the behavior to log at the same loglevel as the file
resource.
Merge branch 'pr/2410'

* pr/2410:
  (PUP-1846) File content diffing should respect loglevel
Merge pull request #2417 from zaphod42/issue/master/pup-1839-incorrect-settings-when-using-puppet-device

(PUP-1839) Introduce overridden defaults
Merge branch 'master' of https://github.com/puppetlabs/puppet