cosmetic changes to package providers
(#22474) Update forge/repository.rb to conditionally include zlib

Previously using the --no-zlib flag or using puppet on a ruby without zlib
support would result in a load error and stacktrace, because
lib/puppet/forge/repository.rb requires zlib and uses a constant defined by
Zlib. This commit updates repository.rb to only require zlib and use its
constant if the zlib feature is available and the --no-zlib flag was not passed
(zlib is enabled by default in defaults.rb).
With this commit running puppet on a ruby without zlib does not throw a
stacktrace or other error related to zlib.
Merge pull request #1886 from haus/ticket/stable/22474_conditionally_require_zlib

(#22474) Update forge/repository.rb to conditionally include zlib
(#22110) apply tags regex to catalog tags
(#22499) Puppet manages owner/group of own vardir

lib/puppet/defaults.rb has :vardir as a directory setting, but did not
specify an owner or group.  If the user/group is changed and puppet is
restarted with a --mkusers setting, vardir will be owned by the previous
user uid, and puppet master will fail to access information under
/var/lib/puppet (if permissions are strict enough).  This first
manifests as an inability to read the ca cert under
/var/lib/puppet/ssl/certs.  (This assumes running puppet master as root,
which will attempt to manage settings as the service user 'puppet' and
then daemonize as puppet).

This change addes :owner, :group settings of 'service' to the :vardir
entry.
Merge pull request #1865 from ptomulik/package_cosmetics

cosmetic changes to package providers
Merge pull request #1891 from jpartlow/issue/master/22273-puppet-manages-var-lib-puppet-owner-and-group

(22273) Puppet manages owner/group of own vardir
(maint) Add parentheses in function calls

These tests were missing paretheses around arguments in calls.
(#22498) Stop future parser from interpreting 0 as 00 (octal 0).

The rule for determening radix interpreted '0' as an octal number.
When transforming it to a String it became '00'.

This changes the octal recognition to make '0' be interpreted as
being decimal.

Tests checks that '0' and '00' both work.
(#21373) Fix future parser transformation of node inheritence.

This fixes the broken transformation of node inheritence. The cause
was that Resource::Type only handles an AST::Regexp as a special
case and expects the :parent option to be a String otherwise.

The transformer passed an ASTString (or other AST objects) which
caused the reported problem.

This fix also includes validation of the node parent (it was missing
in the 3x checker).
(#22110) remove the catalog constructor set of @version

In the first pass of the catalog endpoint documentation,
I added a '@version = 0' to the catalog constructor, both
because it seemed (naively) good to initialize everything, and
because it allowed the first draft of the spec tests to pass.

Well, as it turns out, this has unintended consequences for
*non* host_config use of the catalog (e.g. settings); specifically,
it causes a confusing info message like:
    Info: Applying configuration version '0'
because the 'Applying' message is suppressed if version is nil.

Also, this is no longer needed for the committed spec tests, so
just removing it.
Merge pull request #1892 from kylog/issue/22110-remove-initialization-of-version

(#22110) remove the catalog constructor set of @version
(maint) print meaningful debug messages in execpipe
Merge branch 'pull-1882'
(packaging) Update PUPPETVERSION for 3.3.0
Merge branch 'release/stable/3.3.0' into stable

* release/stable/3.3.0:
  (packaging) Update PUPPETVERSION for 3.3.0
Merge branch 'stable'

* stable:
  (packaging) Update PUPPETVERSION for 3.3.0
  (#22474) Update forge/repository.rb to conditionally include zlib
(Maint) Convert to new block expects
(#22471) Rescue errors specific to the YAML parser

The different yaml parsers, which are used in different versions of
ruby, end up throwing incompatible errors when loading data. The
Psych::SyntaxError that is thrown by the ruby 1.9 Psych parser is not
catchable by a generic `rescue => detail` block. Instead it needs to
explicitly call out the errors that need to be rescued.

This duplicates the error logic in Puppet::Indirector::Yaml.
(Maint) Simplify code

There was some unused code, overly complicated conditionals, and a use
of YAML that didn't use the built in writing to a stream.