(PUP-2364) Use the the puppet config vardir setting

instead of the beaker variable puppetvardir.  This change, while
pleasing in and of itself, was needed for testing on AIX.  The vardir
used there by puppet is different, and Beaker does not track a separate
set of defaults for AIX.
Merge branch 'pup_2364_spike_vars' into stable

* pup_2364_spike_vars:
  (PUP-2364) Use the the puppet config vardir setting
(PUP-2650) Add :array setting type
(maint) Move duplicate code in /lib/puppet/provider/service/freebsd.rb into single method

Prior to this commit, service_name and rcvar_name contained duplicate
code in lib/puppet/provider/service/freebsd.rb that accomplished the
same thing. This commit moves this code into a single method that
can be invoked from both service_name and rcvar_name.
(PUP-2650) Add disable_warnings setting

This commit adds a new setting that allows users to disable different
classes of warnings. Right now the only supported type of warning that
can be disabled is 'deprecations'.
(PUP-2650) Defer deprecation warnings until we can read disable_warnings

The difficulty with using the value of the disable_warnings setting to
adjust deprecation_warnings issued for other configuration settings is
that we need settings to finish initialization first.  Otherwise
deprecation_warnings become dependent on the order of setting
initialization.  To account for this, I added a deprecated attribute to
base_setting, allowing us to mark any setting as deprecated completely
or allowed_on_commandline.  And the code in settings to issue
deprecations now tracks deprecated settings as they are configured, and
then issues the deprecations after the application is initialized.
Merge branch 'pull-2740' into stable
Merge branch 'stable'

Conflicts:
	lib/puppet/defaults.rb
Merge pull request #2723 from briancain/maint/master/consolidate-methods

(maint) Move duplicate code in /lib/puppet/provider/service/freebsd.rb i...
(PUP-2705) Use source permissions for fact pluginsync

The fix for PUP-1986 caused the agent to no longer apply source
permissions of pluginsync'ed content to the downloaded files. This
caused a regression with external executable facts, since they must be
executable on the agent in order for facter to execute them.

This commit re-enables using source permissions during fact pluginsync,
while continuing to ignore them for module pluginsync.
(maint) Test downloader behavior, not implementation

Test the behavior of the Puppet::Configurer::Downloader#file method, instead
of how it constructs a file resource.
Merge branch 'pr/2715'

* pr/2715:
  (maint) Test downloader behavior, not implementation
  (PUP-2705) Use source permissions for fact pluginsync
Merge branch 'pr/2715' into stable

* pr/2715:
  (maint) Test downloader behavior, not implementation
  (PUP-2705) Use source permissions for fact pluginsync
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
Merge branch 'master' of https://github.com/puppetlabs/puppet