(PUP-3032) Add setting to always cache `feature` load attempts

This commit adds a new setting, :always_cache_features, which affects
how we cache attempts to load Puppet 'features'.  If false, then
calls to `Puppet.features.<feature>?` will always attempt to load the
feature (which can be an expensive operation) unless it has already been
loaded successfully.  This makes it possible for a single agent run to,
e.g., install a package that provides the underlying capabilities for
a feature, and then later load that feature during the same run (even if
the feature had been tested earlier and had not been available).

If this setting is set to true, then features will only be checked once,
and if they are not available, the negative result is cached and returned
for all subsequent attempts to load the feature.  This behavior is almost
always appropriate for the server, and can result in a significant performance
improvement for features that are checked frequently.
I had to move these accessors up to an earlier spot in the file because of a chicken-and-egg problem.  A few lines down from here we try to load up the 'base' features; if we tried to read the value of a setting in the implementation of the features checking before these accessors were defined, we'd get an exception.  Moving them up here means that we can check for values of settings as part of the implementation of feature loading.