(#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.
Merge remote-tracking branch 'upstream/3.x'

* upstream/3.x:
  Revert "Merge branch 'fix/3.x/7316_load_faces_from_modulepath_try3' into 3.x"
(#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.
Revert "Revert "Merge branch 'fix/3.x/7316_load_faces_from_modulepath_try3' into 3.x""

This reverts commit ef3fe695fd0be5ff2b5aeb563f34f62a0f503831.
(#7316) Add spec coverage for Puppet::Application::Master#app_defaults

Without this patch we don't have any spec test coverage for the
app_defaults instance method of the Puppet::Application::Master class.
This lack of coverage is problem because cherry picking the confdir and
vardir patch from PR-882 in commit b064ee63 appears to work just fine
after resolving the merge conflicts.  Things were not fine, however,
because the app_defaults method makes a call that raises an exception
and none of our spec tests caught this issue.

The acceptance tests did, however, by exercising the command `puppet
master --configprint pidfile`
(#7316) Do not set default values for confdir and vardir in the master

Without this patch applied `puppet master` will explicitly set the value
for confdir and vardir inside of
Puppet::Application::Master#app_defaults.  This is a problem because
it calls a method that does not exist while trying to do so.

This patch fixes the problem by implementing the intended behavior
documented in #15337, and specifically in commit 38cba0a.  This intended
behavior is:

  1: If provided, use explicit puppet.conf in `--confdir`
  2: If root, use system puppet.conf
  3: Otherwise, use ~/.puppet/puppet.conf
Update lib/puppet/version.rb for 3.0.0
This will fix Refactor #16643.

The Hyphen ‘–’ in name only unofficially supported in some puppet
versions.

Fix: sample-module name changed into sample_module which is supported.
sample_module.pp refactored text: include sample-module into include sample_module
Merge branch 'fix/3.0.x/16643_sample_module_rename' into 3.0.x

* fix/3.0.x/16643_sample_module_rename:
  sample_module.pp refactored text: include sample-module into include sample_module
  This will fix Refactor #16643.
Merge branch '3.0.x' into 3.x

* 3.0.x:
  sample_module.pp refactored text: include sample-module into include sample_module
  This will fix Refactor #16643.
Merge branch '3.x'

* 3.x:
  sample_module.pp refactored text: include sample-module into include sample_module
  This will fix Refactor #16643.
  Update lib/puppet/version.rb for 3.0.0
(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) Pull config file parsing into a class

The parser for config files used to be tied up with all of the other
logic for handling configuration settings. This takes the first step in
encapsulating that parsing into a class that is dedicated to just
parsing a configuration file.