(#11276) Load default root certs on Windows

On Windows calling OpenSSL::X509::Store#set_default_paths does nothing. As
a result, puppet is unable to make authenticated SSL connections to
well-known SSL servers, like forge.puppetlabs.com.

This commit adds a RootCerts class that loads the root certs from the
Windows system cert store, and monkey patches the
OpenSSL::X509::Store#set_default_paths to behave as expected on Windows.

Note the actual semantics for set_default_paths are slightly different,
in that on *nix, it sets the paths that openssl will look for trusted root
certs, whereas this patch loads them into the X509::Store object on
Windows. But the net effect is the same, we're specifying the set of root
certs that we trust when authenticating SSL servers.

This commit monkey patches openssl, because there isn't a central way to
create SSL contexts in ruby. Specifically, open-uri hides the process of
setting up the SSL context, so the caller doesn't have to "worry" about
it. In doing so, it calls set_default_paths expecting that is all that is
needed. But it makes it next to impossible for the caller to add other
root certs.

Specifically, the module tool uses open-uri to download tar.gz content,
but that said the issue is not specific to the module tool.

This commit also adds an SSL acceptance test.
Revert "Merge branch 'jeffmccune-yard_gemfile'"

This reverts commit 09f097e73917b43336c9dd55dc90474e495f32c4, reversing
changes made to 8f105246bc75c7cb7c77a4e2a14cb5ae211ea055.

This is being reverted because the yard gem cannot be installed properly
on Windows.

Talking to @joshcooper, we're going to revert this now and figure out a
better way to handle dependencies like this that have issues on some
platforms.  Hopefully there's a way to satisfy a dependency on all
platforms by default and exclude only those we know to be problematic.
tweak the nagios grammar.ry so it reflects the parser

The grammar.ry didn't match the parser.rb; what was in parser.rb was

    module_eval <<'.,.,', 'grammar.ry', 42
        def _reduce_10( val, _values, result )
    result = {val[0] => val[1]}
        result
    end
    .,.,

Which couldn't have come from that grammar.ry which specified:

    var: PARAM VALUE icomment returns { result = {val[0],val[1]} }
(#19148) don't embed a Racc parser in naginator

Naginator embeds a parser engine which clashes with the one the DSL is
using.  This leads to noisy runs like this:

    $ puppet apply -e 'nagios_host {"foo":}'
    racc/parser.rb:27: warning: already initialized constant Racc_Runtime_Version
    racc/parser.rb:28: warning: already initialized constant Racc_Runtime_Revision
    racc/parser.rb:30: warning: already initialized constant Racc_Runtime_Core_Version_R
    racc/parser.rb:31: warning: already initialized constant Racc_Runtime_Core_Revision_R
    racc/parser.rb:35: warning: already initialized constant Racc_Runtime_Core_Revision_C
    racc/parser.rb:39: warning: already initialized constant Racc_Main_Parsing_Routine
    racc/parser.rb:40: warning: already initialized constant Racc_YY_Parse_Method
    racc/parser.rb:41: warning: already initialized constant Racc_Runtime_Core_Version
    racc/parser.rb:42: warning: already initialized constant Racc_Runtime_Core_Revision
    racc/parser.rb:43: warning: already initialized constant Racc_Runtime_Type
    Finished catalog run in 0.08 seconds

The fix is simply to not embed the parser engine, and use the same one as the puppet DSL.
(maint) Cleanup whitespace errors

No change in behavior, just cleaning up some white space errors found
with git diff --check.
Merge branch 'richardc-fix/master/19148'

* richardc-fix/master/19148:
  (maint) Cleanup whitespace errors
  (#19148) don't embed a Racc parser in naginator
  tweak the nagios grammar.ry so it reflects the parser

closes #1466
(#14544) Make puppet apply --write-catalog-summary produce resources and classes state files

MCollective requires a classes.txt and resources.txt to function.  The
agent application writes this by default but the apply application has
no way to write these files.

With the increased popularity of running puppet masterless opting
instead to only run puppet apply on every node this is becoming a
problem for mcollective users who wish to run this mode of puppet
configuration management

This commits adds a new flag to the apply application -
--write-catalog-summary - which enables the creation of these 2 files
leaving it off by default to avoid apply from stepping on the toes of an
agent unless the user specifically request this behavior
Merge branch 'ripienaar-feature/master/14544'

* ripienaar-feature/master/14544:
  (#14544) Make puppet apply --write-catalog-summary produce resources and classes state files

closes #1465
Merge pull request #1439 from joshcooper/ticket/master/18978-windows-cacerts

(#18978) Load default root certs on Windows