(#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
(maint) Add specs for parser resource parameters

Classes Puppet::Parser::AST::ResourceParam and Puppet::Parser::Resource::Param
(#23115) Include manifest context in Puppet::DevError

When a 'devfail' or Puppet::DevError is thrown, include the user's manifest
file/line context as it can help in finding the problem.
(#23115) Convert nil resource parameter values to undef

If a resource parameter evaluates to nil (e.g. a return value from a parser
function), then convert the value to undef.  This prevents an error in
Puppet::Parser::Resource::Param which requires a non-nil value on
instantiation.
(#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.
Merge pull request #1916 from joshcooper/ticket/master/21817-ignore-duplicate-certs

(#21817) Ignore duplicate certs
Merge branch 'ticket/master/19447-windows-symlinks-unlink-abstraction'

* ticket/master/19447-windows-symlinks-unlink-abstraction:
  (#19447) Puppet::FileSystem::File.unlink

Closes GH-2063
Merge pull request #2054 from branan/ticket/23126/allow_ssh_git_gems

(#23126) Allow facter and hiera gem locations to be SSH git URLs
(#9546) Apply the permissions fix to Solaris as well.
(#9546) Fix comment and assert msg to match behavior change.
(#9546) Apply the permissions fix to Windows as well.
(#9546) Factor out the tar command to de-dup solaris vs gnu tar impls
(#9546) Fix up the solaris gtar spec
Merge pull request #2064 from kylog/issue/9546/fix-solaris-and-windows-module-install-tests

Issue/9546/fix solaris and windows module install tests
(#23147) Add a spec test to reproduce the issue
(#23147) Make the catalog available to the resource during to_catalog

This reverts the logic in the fix for #22943 so that the catalog
is available to a resource during the to_ral conversion.
(#23147) Add alternate fix for #22943.

The original fix for 22943 induced this #23147; this patch
is an alternate fix for #22943 which allows checking the parent
even if it was previously found to be nil (which can happen
if the path is created during to_ral).