(PUP-3227) Address man page ownship conflicts

Prior to this commit, upgrading from puppet=2.7.23-1~deb7u3 and
puppetmaster=2.7.23-1~deb7u3 to puppet=3.7.0.29-1puppetlabs1 and
puppetmaster=3.7.0.29-1puppetlabs1 fails. I believe this problem is due
to how Debian chose to package puppet-common, which owns
`/usr/share/man/man8/puppet-master.8.gz`.

This commit adds in a `Conflicts:` to the puppetmaster and
puppetmaster-common packages to make sure that we can successfully
upgrade from these older package versions. However, if a user has
puppetmaster and puppet older than 3.3.0 installed on a machine, and
only upgrades puppetmaster, this will uninstall the puppet package from
the system.
PUP-3366 Fix issues with string/enum type assignable calculations

There were errors in the calculation of string/enum calculation.
Basically Enum == String, if String is size constrained then
Enum < String. This fixes this calculation.

There were no tests for this, they are now added.
(PUP-3365) Change 3x deep map of undef to only do surface map

This changes the mapping of arguments to 3x function calls to not
map undef to empty strings except at the surface level. Other mappings
are still done as they are required for frozen strings, and values
having a type that is not supported by the 3x functions.
(PUP-2998): Make log_level settable in puppet.conf

Added a call hook to the `log_level` setting so that this setting can be
defined in `puppet.conf` in addtion to being passed as a command line flag.
(PUP-3363) Make transformation of unparenthesized calls handle errors

This fixes problems when a user enters commas where they are not
supposed to be. As a result, an expression will be parsed as being an
argument list for an unparenthesized function call. The transformation
logic for such calls did not take one case into account; a non call
followed by an argument list. e.g:

$a = 1,10

Which resulted in a strange AST model (a literal list with an assignment
and a 10).

This commit adds error checking and raising of an exception in the
transformation which is caught by parser_support and formatted into an
error - either about an illegal comma (when the LHS cannot possibly be
a call at all (as in the above exampel), or a more elaborate
message about that what could be a function call requires parentheses.

In order to enable positioning of the error message on the first comma
in the argumet list, the comma tokens were required in the expression
list fed to the transformer. Subsequently these tokens must be filtered
out by the transformation, and passed on in the raised exception (since
the receiver would otherwise not know which token that caused the
problem (it is nested inside the stucture it passes on to be
transformed).

Unparenthesized function calls are a very bad idea...
(PUP-3366) Correct comparisson of Enum > Enum[a]

Comparissons involving an unparentesized Enum were not correct
because an iteration with all? returns true if the set being
enumerated is empty.

This modifies the logic, and adds missing tests.
(PUP-3298) Remove deprecated Puppet::Util::SUIDManager.run_and_capture

This commit removes the deprecated method `run_and_capture` from the
`Puppet::Util::SUIDManager` module. It is replaced by
`Puppet::Util::Execution.execute`.

This commit is part of the code removal effort for Puppet 4.
Merge pull request #3154 from hlindberg/PUP-3363_trailing-comma-assign

(PUP-3363) Make transformation of unparenthesized calls handle errors
Merge pull request #3142 from hlindberg/PUP-3365_remove-deep-undef-mapping-in-3x-func-api

(PUP-3365) Change 3x deep map of undef to only do surface map
(maint) Use $vardir for ssldir, like factpath.
(PUP-3352) Remove `zlib` setting

Previously, puppet had a `zlib` setting to control whether to use zlib
compression when connecting to the forge or when using `b64_zlib_yaml`
as a network serialization format.

This commit removes the `zlib` setting, and instead, if ruby supports
the `zlib` library, then we will accept compressed content, e.g. when
downloading modules from the forge.

The b64_zlib_yaml format is being removed in Puppet 4, so that part
doesn't matter.

The `zlib` setting defaulted to false, so there shouldn't be any
behavior changes other than you can no longer set the property to
false.
(PUP-3352) Always accept compressed content from the master

Previously, a puppet agent would not use compression when downloading
catalogs and file contents. Compression could be enabled via the
`http_compression` setting, though it defaulted to false.

This commit removes the `http_compression` setting. If the agent ruby
supports zlib, then the agent will add an Accept-Encoding header
specifying that it will accept compress content.

If the agent ruby doesn't support zlib, then the agent will not set
the header, and it will behave like it used to.

Note that not all HTTP servers support compression, e.g. webrick, or are
configured to serve compressed content, e.g. passenger. So in order for
the agent to receive compressed content, the agent must accept it, and
the server must be configured to send it.
(maint) Write forge HTTP debug output to stderr

The forge has a different code path for creating Net::HTTP connections,
so it did not abide by the `http_debug` setting.

This commit changes the module tool so that if `http_debug` is true,
that it writes HTTP debug output to $stderr
(PUP-3364) Improve the error message for numeric resource titles

This improves the error message when a numeric resource title is
used in a resource reference, or when a numeric attribute name is
referenced. The message used to be too generic, and used internal
Ruby types instead of puppet types in the message string.
Merge branch 'pr/3136' into stable

* pr/3136:
  (PUP-3364) Improve the error message for numeric resource titles
(PUP-1165) Perform validation on desired triggers not current

The `enabled` and `index` trigger parameters are read-only, so they will be set
in the `current` trigger, but are not allowed in the `desired` trigger.
Previously, the `translate_hash_to_trigger` method performed validation based
on whether it was passed a `current` or `desired` trigger.

This commit moves the validation logic to the `validate_trigger` method, which
is only ever called with `desired` trigger values. It also allows the `index`
and `enabled` keys to be present in a trigger. This isn't an issue because they
are ignored for the purposes of determining if two triggers are the same.

The reason for this change, is because ultimately we don't want the
`translate_hash_to_trigger` method to mutate the `current` trigger, and this
commit makes it so that the `index` and `enabled` keys can be in the
`puppet_trigger` but will be ignored.
(PUP-1165) Ignore scheduled_task trigger start_date when unspecified

Previously, if a scheduled_task resource was created in the past, and
the desired value of the resource's trigger did not specify a
`start_date`, then puppet would think the resource was out of sync,
and attempt to delete the old trigger, and add the new one. This
process would repeat once per day, leading to spurious 'triggered
changed' messages, and reports.

This commit modifies the scheduled_task provider so that if the
desired value does not specify a `start_date`, then it will
effectively be ignored when comparing the current and desired
triggers.
(maint) Remove magic behavior

Previously, the `#triggers` method on the scheduled task provider would
magically return single element or an array of multiple elements.

This commit changes the provider to always return an array, of possibly a
single element.
(PUP-3373) Clarify docstring for mount options

The docstring for the `options` parameter of the mount Type did not clarify
that the parameter value should be a single string. Also noted that many
operating systems use a comma-delimited list.
Merge pull request #3162 from whopper/pup-3298/removal/run_and_capture

(PUP-3298) Remove deprecated Puppet::Util::SUIDManager.run_and_capture