(#21817) Ignore duplicate certs

Previously, SSL connections initiated by the puppet agent on windows, e.g
puppet module install, would cause the agent to terminate if the 'Root' store
on Windows contained duplicate certificates.

This commit ensures that we only add unique certificates to the X509 store.
Also, if we fail to add a certificate to the store, we issue a warning and
continue.
(maint) Remove stale files from ext/rack

The ext/rack directory had an outdated README file and an ancient manifest.pp
file, and the useful files (config.ru and the example vhost) were buried in a
subdirectory.

This commit removes the old files, moves the good files up a level, and adds a
comment to the vhost pointing to the maintained passenger documentation.
(maint) Update debian packaging to reference new rack support location

As updated in commit 4c9b63f, the sample files for rack passenger deployment
have been moved up a directory. The puppetmaster-passenger package for debian
uses those files, so this commit updates the debian/rules file with their new
location. It also updates the README_DEVELOPER.md, which references the same
files.
Merge pull request #1951 from nfagerlund/stale_rack_files

(maint) Remove stale files from ext/rack
(#9546) Preserve permissions in 'puppet module build'

Previously, 'puppet module build' made no attempt to preserve
permissions. This could render any external fact scripts
unexecutable.  This patch simply preserves permissions when
creating the pkg directory which is tarred up to build the
module.
(#23126) Allow facter and hiera gem locations to be SSH git URLs

Previously, git urls could only be specified as `git://`. This works
fine for pulling down the puppetlabs facter and hiera repos, but
doesn't allow private forks of those to be pulled down. This is
problematic because the Gemfile is used for setting up our test
environments and the PE versions of facter and hiera are accessed over
SSH.

This commit allows git@ urls in addition to the curreng git: urls.
(#9546) Preserve execute permissions on 'module install'

Previously (even with the patch to 'module build') execute
permissions were stripped from everything in a module.  This
was introduced to fix the security holes discussed in #14333.
However that fix (which set all files to 644) had the unneeded
side effect of discarding the executable bit.

So this change preserves permissions from the tarball, but
removes sticky/setuid/setgid bits (which are the security hole)
and removes file write permissions (which aren't needed).  This
should address the needs of both #9546 and #14333.
(#9546) Update test to reflect changed permissions
(#9546) Change check for module installation

Now that we are only stripping the dangerous bits from the file
permissions (sticky, suid, sgid, and write) the test for correct module
installation was incorrect.
Merge branch 'kylog-issue/9546/make-pmt-to-preserve-execute-permissions'

* kylog-issue/9546/make-pmt-to-preserve-execute-permissions:
  (#9546) Change check for module installation
  (#9546) Update test to reflect changed permissions
  (#9546) Preserve execute permissions on 'module install'
  (#9546) Preserve permissions in 'puppet module build'
(Doc) Mark the Puppet::Util::Execution public methods

The methods where not public, nor private. They should have been marked
public.
(#23131) Remove special casing of Class 'main'
(#23138) Document status

This adds documentation for the status endpoint. This endpoint has
almost no behavior, but could be extended in the future to provide more
information.
(#23131) Add a spec test asserting that main is treated like other classes
Merge pull request #2058 from zaphod42/feature/master/document-status

(#23138) Document status
Maint: Make doc string for Windows group provider match 3.4.0 fixes

Nested groups and domain user members are now supported.
Merge pull request #2059 from nfagerlund/340_windows_nested_groups

Maint: Make doc string for Windows group provider match 3.4.0 fixes
Merge pull request #2057 from kylog/issue/23131/empty-string-element-in-containment-path-array

(#23131) Remove special casing of Class 'main'
(#19447) Puppet::FileSystem::File.unlink

 - All previous File.unlink calls go through the new FileSystem::File
   abstraction so that the implementation can later be swapped for a
   Windows specific one to support symlinks
Merge pull request #1916 from joshcooper/ticket/master/21817-ignore-duplicate-certs

(#21817) Ignore duplicate certs