(PUP-2871) Add :install_options and :uninstall_options to the pacman provider

Without this patch, a user unfamiliar with the pacman provider might write
attempt to add flags to install and uninstall, not knowing that they will fail.
This patch adds support for these two flags to ensure a more cohesive experience
across puppet.
(PUP-2873) Make puppet master compile honor logdest

puppet master --compile right now unconditionally spews logs to standard
output which makes it slightly more difficult for someone to use the
actual result of the command which is the catalog. Remove the
unconditional redirection to :console and honor whatever the configured
log destination is (either via the --logdest argument or configuration)
(PUP-2794) Add an (internal) type called Unit and use in Callable

This adds a type named Unit, that is an "undef of sort" in that
it is assignable to anything, and anything can be assigned to it.

This type is not exposed in the Puppet Language, and it is only
used in Callables to describe that there is no type requirement on
a parameter. (For cases where reflection of a given lambda is
performed etc. or where the error raised when calling a block
is an acceptable solution).
(maint) Disable timesyncing for acceptance tests

We have been seeing windows time service errors on 2008R2 while
performing time syncing. This step should not actually be necessary
as vsphere seems to provide synchronized time across VMs from the pool.
(PUP-1811) Fix collection use of include?

The virtual resource collection uses the comparator for include?, but a
previous commit changed the signature. This wasn't caught until the
acceptance tests ran because it turns out that the collection tests were
not being run against the future parser.

This fixes the problem by passing the scope that is available for
collection to the method. It also removes two of the acceptance tests in
favor of adding a new integration test and running the collection tests
with the future parser.
Merge pull request #2637 from akosiaris/master

(PUP-2637) Make puppet master compile honor configured logdest
Merge branch 'master' into puppet-4
(PUP-2869) Puppet should support HTTP proxy authentication

Without this patch it is not possible to use the Puppet Module
Tool (PMT) with an authenticated proxy.
Many enterprises utilise the services of authenticated proxies for
Internet access. Current code is able to utilise a proxy, but does
not consider credentials for authenticated proxies.
This patch uses the credentials from either the environment settings
for HTTP_PROXY or http_proxy, or the corresponding values in the
puppet.conf file.  The patch allows for http_proxy_user and
http_proxy_password to supplement the current http_proxy_host and
http_proxy_port variables within the puppet.conf.
Merge pull request #2826 from zaphod42/issue/master/pup-1811-resource-collection

(PUP-1811) Fix collection use of include?
Merge pull request #2759 from pvande/pup_2079-add-noop-template-to-pmt-skeletons

(PUP-2079) Add no-op PMT generate template format.
(PUP-1281) Don't use win32console if ruby v2

Some of this work was done with PUP-2777 (support bundler workflow). That limits
win32console down to being installed/depended upon only for ruby 1.x. This builds
on top of that to only setup functions for colorizing output when using Ruby 1.x
on Windows.
(PUP-2794) Add support for Optional and Variant as Callable

This adds support for a callable block to be specified using
Optional or Variant, as long as any actual type is a Callable.

I.e. in the Function API, it is possible to write:

  required_block_param 'Variant[Callable[1,1], Callable[2,2]]', :block

If the function will invoke the block with either exactly one or
exactly two parameters (and when no type is specified, the type is the
internal Unit (don't care).
(PUP-2794) Change function each to dispatch based on block arity

This changes the implementation of the each function to use different
dispatchers depending on the arity of the given block. This means that
the included module for asserted_serving_size is no longer needed.
(PUP-500) Translate acceptance tests to spec

These tests have nothing to do with the full application stack and are
only checking that the semantics of collections are correct. This
removes this acceptance test in favor of the existing integration spec
tests, which run about 100 times faster and many times more reliably.
(PUP-500) Test realize for realz

The realize() spec tests didn't really do much since they mocked out so
close to the function itself. This calls it in a manner that puts
resources in the catalog and checks that they are there.

The accpetance tests for the realize function are no longer needed.
(PUP-2794) Change function filter to use dispatch for block arity

This changes the function filter to use the dispatchers instead
of having a special arity check.
(PUP-2866) Read UID_MIN from login.defs instead of hardcoding value.

This change reads UID_MIN from /etc/login.defs, if present, for the
minimum non-system user id instead of simply hardcoding a value.  If the
file isn't present or UID_MIN isn't specified, we fall back to 1000 for
BSD family operating systems and 500 for all other operating systems.
Merge pull request #2679 from nwolfe/maint/master/correct-ssl-cert-generate-autosign-test

(maint) Correct ssl/puppet_cert_generate_and_autosign test to do what it...
(PUP-2794) Change function filter to use dispatch for block arity

This changes the function filter to use the dispatchers instead
of having a special arity check.
Merge pull request #2817 from ferventcoder/ticket/master/PUP-1281-remove-win32console-gem-for-ruby2

(PUP-1281) Don't use win32console if ruby v2