(Maint) Remove the hiera-puppet readme

The hiera-puppet documentation was not reflective of how to actually use
the puppet backend. This information needs to be cleaned up and moved
into the real puppet or hiera documentation. It is still available in
the old hiera-puppet repo, but is going to be removed from here for now.
Improve Puppet.version API to help automate releases

Without this patch applied, it is difficult to fully automate releases
because the `PUPPETVERSION` constant in code must be updated, creating a
new version of the code.  This circular dependency makes it very
difficult to use `git describe` as the basis for a version string.

This patch addresses the problem by providing a way to break the
circular dependency.  With this patch applied, Puppet will use the
contents of `lib/puppet/VERSION`, if it exists, as the version string.
This VERSION file is not intended to be version controlled therefore
changing it does not create a new version in history as does changing
the code itself.

This patch defines the public API to maintain the software version for
package maintainers.
Merge branch 'feature/master/define_version_api'

* feature/master/define_version_api:
  Improve Puppet.version API to help automate releases
Merge pull request #1283 from zaphod42/maint/master/cleanup-hiera-puppet-merge

(Maint) Remove the hiera-puppet readme
Update lib/puppet/version.rb for 2.7.20
(#17488) Capture access violations for selinux context of file resources

...and deal with them gracefully without aborting the run.
A simple reproducer of the problem (abort), to be run unprivileged:

puppet apply --execute "file { '/root/chuj': ensure => absent; }"

(#17488) Don't abort while checking managedhome on nonexistent user provider

The user resource itself should fail itself and this prevents falling back to
that. Simple test case (unprivileged):

before$ puppet apply --execute 'user { "kokot": managehome => true }'
Parameter managehome failed: Validate method failed for class managehome: undefined method `manages_homedir?' for NilClass:Class
after$ puppet apply --execute 'user { "kokot": managehome => true }'
err: Could not find a suitable provider for user
notice: Finished catalog run in 0.10 seconds
(#17488) Handle SELinux errors gracefully

Without this patch applied the SELinux support in Puppet does not
gracefully handle errors when running unprivileged.  This is a problem
because `puppet --noop` is often run as a normal user.

This patch addresses the problem by catching exceptions raised for no
such file or directory and permission denied errors.  Puppet issues a
warning when these exceptions are handled.

The behavior without this patch applied is:

    [jeff@pe-centos6 ~]$ puppet apply --noop --execute "file { '/root/chuj': ensure => absent; }"
    Permission denied - /root/chuj

Which causes Puppet to prematurely abort.  With this patch applied,
Puppet finishes the catalog run and issues a warning to the user:

    [jeff@pe-centos6 ~]$ puppet apply --noop --execute "file { '/root/chuj': ensure => present; }"
    Warning: /File[/root/chuj]/seluser: Could not stat; Permission denied - /root/chuj
    Warning: /File[/root/chuj]/selrole: Could not stat; Permission denied - /root/chuj
    Warning: /File[/root/chuj]/seltype: Could not stat; Permission denied - /root/chuj
    Warning: /File[/root/chuj]/selrange: Could not stat; Permission denied - /root/chuj
    Warning: /File[/root/chuj]: Could not stat; permission denied
    /File[/root/chuj]/ensure: current_value absent, should be present (noop)
    Class[Main]: Would have triggered 'refresh' from 1 events
    Stage[main]: Would have triggered 'refresh' from 1 events
    Finished catalog run in 0.04 seconds
Merge branch 'fix/3.0.x/17488_selinux' into 3.0.x

* fix/3.0.x/17488_selinux:
  (#17488) Handle SELinux errors gracefully
  (#17488) Capture access violations for selinux context of file resources
Merge branch '3.0.x'

* 3.0.x:
  (#17488) Handle SELinux errors gracefully
  (#17488) Capture access violations for selinux context of file resources
Merge branch '2.7.x' into 3.0.x

Conflicts:
	lib/puppet/version.rb
Merge branch '3.0.x'

  * Merge-up after 2.7.20 release
(Maint) Test interplay of colliding names

This adds tests to ensure that the way scope is handled in the case of a
variable name colliding with a class name is nailed down. It also adds a
case to call out that nodescope is different from topscope.
Merge branch 'maint/master/more-scoping-examples'

* maint/master/more-scoping-examples:
  (Maint) Test interplay of colliding names
Merge git://github.com/puppetlabs/puppet
Remove --exact default eix-parameters