(#14822) Re-evaluate features if they previously were false

Allow features to be re-evaluated each time they are checked, if they
previously evaluated to false.  This allows for providers by features to have
dependencies installed during a run and then for the feature state to change
from false to true.

Caching of feature results that were previously true has been kept.  Caching of
blocks used to evaluate features remains unaffected and are still run only once.
(#14822) Use feature confine for feature tests during run

Fixes two providers to use the "confine :feature" statement, allowing for the
features to be re-evaluated during a run instead of only once.
(#16376) Fix rails compatibility layer for activerecord < 3.0

Previously an alias was attempted between scope and named_scope to allow older
activerecord versions (< 3.0) to work with the inventory service while also
supporting modern activerecord. The scope alias failed because
Puppet::Rails::InventoryNode inherits from ActiveRecord::Base, which has a
scope method already. So activerecord's scope method is found instead of the
intended alias target. This commit removes the alias and simply switches on
activerecord version to use the correct scope (AR >= 3.0) or named_scope (AR <
3.0) method.
fail better in package repo rake tasks

This commit modifies the top level Rakefile to only
load the packaging repo yaml file if it exists, as
well as provide some error handling for other unwanted
conditions that may arise as a result of trying to
set up the packaging repo.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Merge pull request #1171 from MosesMendoza/maint/2.7.x/cleanup_package_repo_rake_tasks

fail better in package repo rake tasks
(#16585) Remove dead ldapnodes setting

This setting has been dead code since 0.24.0, and its value is never read.
This commit removes it.
(maint) Add .yardopts file

This patch makes it easy to generate documentation, including private
methods.  The assumption is that code will be marked up in markdown
style yard comments.  YARD tags are documented at: [YARD Tags
Overview](http://rubydoc.info/docs/yard/file/docs/Tags.md)

The YARD documentation is currently intended for Puppet developers and
community contributors.  While useful for end users, YARD documentation
is not intended for new users or end users who are not developing on
Puppet.
(maint) Add yard generated documentation to git ignore

This patch simply adds the yard generated documentation to the gitignore
list.
(#16637) Add spec test for non-root puppet master confdir and vardir

This patch simply adds test coverage to catch regressions in
[16637](http://projects.puppetlabs.com/issues/16637)
(#16637) Fix default confdir and vardir with puppet master as normal user

Without this patch `puppet master` will select the wrong default confdir
and vardir values when running as a non root user.  This is a problem
because permission denied errors result trying to create the system
directories when running as a non-system user.

This patch fixes the problem by removing the explicit check for the
master run mode in Puppet::Util::RunMode#which_dir
Merge pull request #1136 from haus/ticket/2.7.x/16376_update_rails_compatibility_layer

(#16376) Fix rails compatibility layer for activerecord < 3.0
(Maint) Move initialize near top

The initialize method was hard to find buried down after line 300. This
moves it closer to the top so that a reader of the code and more quickly
see how things are setup.
(Maint) Extract class to encapsulate value translation

The value translation code has been buried deep inside the general
settings handling, which has made it hard to find, reuse, and test. This
pulls out a class that can be used for setting value translation.
(Maint) Extract value translator for settings

Pulled out a class for the translating of values that are going to be
used as settings and added tests around that code.
(Maint) Use value translator directly

This removes an unneeded method that simply called through to the value
translator. There don't seem to be any users outside of the settings.rb
file that were actually using this method.
(Maint) Remove unneeded parse_file method

This method simply delegated to another class. There were no users
outside of the settings.rb file, and so it is just inlined.
(Maint) Remove unused method sectionlist

This method isn't being used anywhere, even in other projects that I
checked.
(Maint) Remove code to support multiple config files

Support for merging config files had been removed, but some of the
supporting code was missed during the removal. This removes the rest of
the support in settings.rb to handle merging multiple config files.
Merge pull request #1194 from jeffmccune/fix/3.0.x/16637_default_confdir_and_vardir

(#16637) Fix default confdir and vardir with puppet master as normal user
(#15717) Require puppet/run in the agent

Commit 81c73fd0d0d0a9ad4a7f2cb5386d5956739a89aa had accidentally removed
any requires of the `puppet/run` file and so the code needed for kick
was not being loaded. This adds loading of that file back into the agent
application.