(PUP-665) Don't call hooks unless absolutely necessary

Calling hooks on configuration settings that don't have them forces the
code to interpolate any `$variable`s in the value of the setting. There
are a couple places where the hooks are called before everything has
been fully prepared (such as in initialize_global_defaults) and so run
mode settings such as confdir are not available.

This restores the old behavior in which only settings with hooks will
end up going down this path. This doesn't fully address the problem, but
it does make the surface area much smaller.
Merge pull request #2178 from zaphod42/issue/master/pup-665-interpolating-variables-too-early

(PUP-665) Don't call hooks unless absolutely necessary