(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.