initial prototype for acceptance test libraries

* Adds a "helper.rb", which you can use by adding "--helper" to your
  call to systest.rb.  Current implementation doesn't do anything
  except for add puppet/acceptance/lib to your LOAD_PATH, which
  gives you the ability to do "require 'puppet/acceptance/*'" from
  within your tests.
* Adds acceptance/lib/puppet/acceptance/temp_file_utils.rb, which
  contains a bunch of utility methods for dealing with temp files,
  file permissions, etc. from within your acceptance tests.
* Modifies "7316_apps_should_be_available_via_pluginsync.rb" to
  use this new library instead of manually defining all of the
  utility methods.
Refactor acceptance tests to use util library

This commit adds utility methods to "temp_file_utils.rb"
and refactors all the tests that were duplicating these
utility methods to use this library code instead.
Merge remote-tracking branch 'upstream/2.7.x' into 3.x

* upstream/2.7.x:
  (maint) Add mailmap to identify contributors
  Updating CHANGELOG, conf/redhat/puppet.spec for puppet 2.7.15rc4
  Remove EL-related test changes from this commit.
  Revert changes to symbolic_modes.rb -- this test should indeed be pending (it should eventually work on Windows).
  Update acceptance tests to use confine instead of skip_test loops

Conflicts:
	CHANGELOG
	conf/redhat/puppet.spec
(maint) Update README.md w/ min Facter ver

As of Puppet 3.0.0, the minimum version of Facter required is 2.0.0.
This commit updates the documentation in README.md.
(#14378) Skip context-based optimisation for complex expressions

When optimising loaded files based on the context given, the context would be
passed into a path expression itself inside quotes.  If the user had given a
path expression for the context that contained quotes then these would need to
be escaped, which Augeas doesn't support today.

This disables the optimisation when the user supplies a complex context path,
preventing errors caused by improperly quoted paths.
Updated manpages, CHANGELOG, puppet.spec, puppet.rb for 2.7.16rc1.
Merge remote-tracking branch 'upstream/2.7.x' into 3.x

* upstream/2.7.x:
  Updated manpages, CHANGELOG, puppet.spec, puppet.rb for 2.7.16rc1.
  (#8858) Explicitly set SSL peer verification mode.
  Test SSL setup code, not our stubbing of it.
  (#14723) Fix http report description

Conflicts in man pages were resolved by taking the 3.x version of the
pages.

Conflicts:
	CHANGELOG
	conf/redhat/puppet.spec
	lib/puppet.rb
	man/man5/puppet.conf.5
	man/man8/filebucket.8
	man/man8/pi.8
	man/man8/puppet-agent.8
	man/man8/puppet-apply.8
	man/man8/puppet-ca.8
	man/man8/puppet-catalog.8
	man/man8/puppet-cert.8
	man/man8/puppet-certificate.8
	man/man8/puppet-certificate_request.8
	man/man8/puppet-certificate_revocation_list.8
	man/man8/puppet-config.8
	man/man8/puppet-describe.8
	man/man8/puppet-device.8
	man/man8/puppet-doc.8
	man/man8/puppet-facts.8
	man/man8/puppet-file.8
	man/man8/puppet-filebucket.8
	man/man8/puppet-help.8
	man/man8/puppet-inspect.8
	man/man8/puppet-instrumentation_data.8
	man/man8/puppet-instrumentation_listener.8
	man/man8/puppet-instrumentation_probe.8
	man/man8/puppet-key.8
	man/man8/puppet-kick.8
	man/man8/puppet-man.8
	man/man8/puppet-master.8
	man/man8/puppet-module.8
	man/man8/puppet-node.8
	man/man8/puppet-parser.8
	man/man8/puppet-plugin.8
	man/man8/puppet-queue.8
	man/man8/puppet-report.8
	man/man8/puppet-resource.8
	man/man8/puppet-resource_type.8
	man/man8/puppet-secret_agent.8
	man/man8/puppet-status.8
	man/man8/puppet.8
	man/man8/puppetca.8
	man/man8/puppetd.8
	man/man8/puppetdoc.8
	man/man8/puppetmasterd.8
	man/man8/puppetqd.8
	man/man8/puppetrun.8
	man/man8/ralsh.8
	tasks/rake/gem.rake
(Maint) Limit data binding API information

Previously the data binding terminus took the entire scope object which
provided far to much access to the internals of puppet to the
implemetors of data binding terminuses. This changes it to pass through
only the data that should be needed for discovering what value to use in
most reasonable implementations of data binding.
Merge pull request #874 from cprice-puppet/feature/master/acceptance-test-util-libs

Feature/master/acceptance test util libs
(#15185) expand default user/conf dirs

The default values specified for user config dir and
vardir contained the "~" character, but were never
being expanded out to the full path of the user's
home directory.  This fixes that and adds tests
to ensure that the values returned for these two
paths are absolute.
Merge pull request #877 from cprice-puppet/bug/3.0rc/15185-default-user-dirs-not-expanded

Bug/3.0rc/15185 default user dirs not expanded
(#14136) Emit debug/warnings when Augeas provider fails to load files

The messages and information from /augeas//error are now printed to debug when
the provider opens Augeas, allowing file parse errors to be found.

The provider can also restrict the files that are loaded (from the default of
everything).  In these cases, the provider now emits a warning and then prints
all the detailed information to debug.  Since a few parse errors are common, no
warning is given when these optimisations aren't in use.
Fix run_mode test w/rt expanding tilde in user dir values
Merge pull request #880 from cprice-puppet/bug/3.0rc/15185-default-user-dirs-not-expanded

Bug/3.0rc/15185 default user dirs not expanded
Merge pull request #860 from zaphod42/maint/3.0rc/cleaner-bindings-api

Maint/3.0rc/cleaner bindings api
Merge commit '11ae0fc' into 3.0rc

* commit '11ae0fc':
  (#14378) Skip context-based optimisation for complex expressions
Merge branch 'tickets/3.x/14136' of https://github.com/domcleal/puppet into 3.0rc

(#14136) Emit debug/warnings when Augeas provider fails to load files
Originally submitted as #733 against master, re-targeting to 3.x now the
branch exists.

The messages and information from /augeas//error are now printed to
debug when the provider opens Augeas, allowing file parse errors to be
found.

The provider can also restrict the files that are loaded (from the
default of everything). In these cases, the provider now emits a warning
and then prints all the detailed information to debug. Since a few parse
errors are common, no warning is given when these optimisations aren't
in use.

Conflicts:
	CHANGELOG
	lib/puppet/provider/augeas/augeas.rb
(#7788) Extend Puppet using rubygems

The autoloader includes rubygems in the search path when searching for
modules to load. Puppet can now load things like Faces, report
processors, and parser functions using rubygems.

Example:

    $ gem install puppetlabs-cloud_provisioner-1.0.4.gem
    ...
    Successfully installed fog-1.3.1
    Successfully installed guid-0.1.1
    Successfully installed puppetlabs-cloud_provisioner-1.0.4

    $ puppet help
    Usage: puppet <subcommand> [options] <action> [options]

    Available subcommands:
    ...
    node_aws          View and manage Amazon AWS EC2 nodes.

This patch adds a new `Puppet::Util::RubyGems#directories` method for
locating the latest gems and their load paths. This method is used in
two places:

 * When searching for subcommands
 * When auto loading plug-ins

Updated specs are included.