Fixed unhandled --ignoreschedules in puppet kick
Use method execute instead of transport.command
Fix spaces
Explicit use of the device given the block
Extract connection and disconnection behaviours
Remove unused verbose parameter, add debug in the transport
Disable debug log in the transport
(maint) Add dependency information for yard and redcarpet

Without this patch `bundle exec yard server --reload` doesn't work.
This is a problem because people who are developing Puppet need to be
able to access the API documentation easily and the yard server is one
such way.  This patch addresses the problem by adding a dependency on
yard and redcarpet for the development group only.  This will prevent
the yard and redcarpet gem from sucking in a large number of
dependencies when running in a CI environment because these environments
are expected to omit development only dependencies when bootstrapping
using `bundle install --path vendor --without development`
(#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.
(#17474) Make it possible to return `false` from a terminus

This manifested as an inability to retrieve the value `false` from hiera using
data bindings. The find method on Puppet::Indirection interpreted this as no
value being returned.
Fix feature detection error undefined method pointer on nil:NilClass.
Fixed URI encoding problem with requirement string

When passing a requirement string with an unescaped URI character,
such as '>= 1.0.3' to puppet module install, an error would be raised.
Added URI escape to make_http_request to ensure all URIs are properly
escaped.
Fix encoding problem with test file
Fix module tool acceptance test

This test was failing due to a change on the forge server when rendering
the description for a module.

This commit changes the test to expect UNKNOWN for the description.
Merge remote-tracking branch 'upstream/2.7.x' into 3.0.x

* upstream/2.7.x:
  Fix module tool acceptance test
Merge remote-tracking branch 'upstream/3.0.x' into 3.1.x

* upstream/3.0.x:
  Fix module tool acceptance test
Merge remote-tracking branch 'upstream/3.1.x'

* upstream/3.1.x:
  Fix module tool acceptance test
Revert "Merge branch 'pull-1339' into 3.1.x"

This reverts commit 7bd6a908a82b0502558564d32a7fa604cee3c5a3, reversing
changes made to 480379d1f61d88e732bd10d6773845a788351ed3.

This commit seems to be the cause of acceptance test failures so I'm
backing this out until we get that cleared up.
Merge branch 'revert-1339' into 3.1.x
Merge branch '3.1.x'