(#3010) cron: allow the absent value for the "special" property

The crontab provider fails to apply the change to a cronjob if
the schedule has been a special schedule such as @daily. Paraphrasing
from the bug report, assuming this crontab:

@reboot /bin/true

this manifest won't work correctly:

cron{ "test": minute  => 50 }

even though puppet will correctly detect that the 'minute' property
needs changing from "absent". The special schedule will remain.

The fix allows this workaround:

cron{ "test": minute  => 50, special => absent }
Allow users to enable profiling via a setting

Prior to this commit, there is no way for an end user to enable
the new profiling features other than by patching their source
code or passing an extra query parameter to a web request,
which requires them to know the precise URL / query params / POST
body of the request that they want to profile, as well as passing
all of the necessary SSL-related flags to `curl` (et al) so that
their request can be authenticated.

This commit simply adds a boolean setting called 'enable_profiling'
which can be used to turn on this functionality for all requests.

We should provide more precise ways for users to control this, but
this at least gives them a simple option until we have something
better.
Add support for enabling profiling via HTTP header

This commit changes the new setting for enabling profiling from
"enable_profiling" to simply "profile", so that it's easy to
use it from the command line.

It also changes the mechanism for enabling profiling in an HTTP
request; previously, profiling would be enabled via a special
query parameter; now it is enabled via a header (X-Puppet-Profiling).

This allows it to work easily for any type of HTTP request
(GET/POST/HEAD/etc.) without having to worry about the means for
adding a query parameter.

The commit also adds a check for the `profile` setting during
outgoing indirector REST requests, and adds the header if the setting
is enabled.  This means that the profiling flag will work from
the client as well as on the server.
Modulefile starts with version 0.1.0
(maint) Do not turn off SELinux if it is already off

Without this patch the external CA acceptance tests is failing on EL
system which already have selinux turned off.  The `setenforce 0`
command returns nonzero when selinux is already disabled.  This patch
addresses the problem by only running `setenforce 0` if selinux is
enabled.
(maint) Fix undefined local variable error from afdddb8

Without this patch the acceptance tests fail to run because of an
undefined local variable.  My previous attempt to fix the acceptance
test caused this error because the variable was set inside of a closure
when the variable did not yet exist outside the closure.

This patch addresses the problem by defining the variable outside of the
closure so that the block references our own variable rather than
creating another one.
(Maint) Remove accidentally left in debug statement
(#20128) Improve dequeue example to represent two separate resources

The existing spec example for dequeuing events used a single resource and
self-refresh, which didn't accurately reflect the two resource layout in the
original issue #7165 where one resource notifies another.
(#20128) Handle event dequeues when target resource has no events registered

In the case where a resource triggers an event with invalidate_refreshes
enabled (i.e. a service starts), the dequeue process would attempt to
invalidate other events registered for this resource.  If no other
notifications had been received on the resource already, then the hash element
for the resource would be nil.  The resource would then fail:

  Error: /Stage[main]//Service[service]: Could not evaluate: undefined method `[]=' for nil:NilClass
Merge branch 'domcleal-tickets/master/20128-service-dequeue-nil'

* domcleal-tickets/master/20128-service-dequeue-nil:
  (#20128) Handle event dequeues when target resource has no events registered
  (#20128) Improve dequeue example to represent two separate resources

closes #1585
(#20136) Add include_private argument to Array#respond_to? monkey patch
Merge pull request #1586 from domcleal/tickets/master/20136-array-respond-to

(#20136) Add include_private argument to Array#respond_to? monkey patch
Merge pull request #1583 from ghoneycutt/tickets/master/20100_Modulefile_starts_at_0_1_0

Modulefile starts with version 0.1.0
Remove trailing whitespace in ext/debian/control
(#19138, #19109, #18985) Update debian ruby dependencies

Previously puppet depended on libaugeas-ruby1.9, which only exists for arm on
sid of debian. The intended dependency was libaugeas-ruby1.9.1, which is also
fulfilled by libaugeas-ruby. This commit updates the libaugeas dependency to
reflect the available packages.
(packaging) Reorder ruby dependencies

This commit reorders the ruby dependencies of Puppet, listing the generic
version agnostic package first, followed by a ruby 1.9.1 package, followed by a
ruby1.8 package.
(maint) Ensure results hash is defined for module install

If the puppet module tool attempted to install a module from the
filesystem that does not exist, it would raise an error before a
variable was defined that the ensure clause needed to modify. Doing so
would raise a NoMethodError on nil, which masked the underlying issue.
This commit defines the variable at the beginning of the method to
ensure that the ensure clause works as expected.
(maint) Update puppet module version in test

Commit 674e7d2 updates the puppet module tool to follow semver.org and
use '0.1.0' as the first revision of the module. Acceptance tests were
relying on the default version being '0.0.1' which meant that the
version change broke those tests. This commit updates the version used
in the tests to match.
Merge branch 'maint_pmt_module_face_acceptance_failures'
Revert "Revert "Merge branch 'pull-1540'""

This reverts commit c992fb536d9fd87ad23b2fc0b88592bfe1dea0f5.