(#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.
(#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
Merge branch 'ticket/master/19447-windows-symlinks-unlink-abstraction'

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

Closes GH-2063
(#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).
Merge pull request #2065 from kylog/issue/cannot-add-aliases-without-catalog

Issue/23147/cannot add aliases without catalog
(Maint) Make tmp directory more safely

Because the temp directory is not immediately created with the discovered name,
there might be a race condition between tests running on the same machine.
Merge branch 'master' of https://github.com/puppetlabs/puppet