(PUP-2026) Add PCallableType and PCallSignature for lambda and function

These types are used to describe a function or lambda and supports
having multiple overloaded signatures.
(PUP-2026) Add lambda/callable type to model

This adds a Callable type to the type system (the model), and makes
use of it in the new Function API (to return the type(s) of
a function's dispatcher - i.e. the supported signature(s).

A single Callable is returned for a single signature, and a Variant
for multiple signatures.
(PUP-2026) Add TypeFactory support for CallableType

This adds support for creating a callable type via the
TypeFactory:

* all_callables method produces a Callable compatile with all callables
* callable method produces a Callable with specified arguments
* with_block method adds a block Callable
* with_optional_block method adds an optional block Callable

There is no need to call the "constrain_size" method since min/max
can be given directly in the calls (min, max) as the last optional
parameters, and max can be given as :default as infinity.
(PUP-2026) Add support for Callable in TypeCalculator

This adds support for inference, assign ability and string formatting
of CallableType.

Supporting names was not a brilliant idea as it only adds complexity
to the Callable type with little gain (what names should be inferred?).
Parameter name support was therefor removed from CallableType
(PUP-2026) Allow block_type of Callable to be specified in factory call

This makes it possible to pass the block_type as the last argument
in the call to the Types::Factry.callable - i.e. if the last
type is a Callable, it is considered to always be the block_parameter.
(PUP-2026) Add support for Callable in TypeParser
(PUP-2026) Add support for Callable in access operator ([])

This also fixes an issue with a missing comma when transforming
type to string.
(PUP-2096) Support alternate http client classes in http_pool

This commit modifies Puppet::Network::HttpPool by adding a
`set_http_client_class` method, which can be used to override
the implementation class that we use as our HTTP client.
(PUP-2096) Update API to use standard ruby idioms
Merge pull request #2523 from hlindberg/pup-2026_add-callable-type

(PUP-2026) Add callable type
(PUP-2158) Set environmentpath before testing pmt and directory envs
Merge branch 'issue/stable/pup-2158-pmt-acceptance' into stable

* issue/stable/pup-2158-pmt-acceptance:
  (PUP-2158) Set environmentpath before testing pmt and directory envs
Merge branch 'stable'

* stable:
  (PUP-2158) Set environmentpath before testing pmt and directory envs
Merge pull request #2485 from cprice404/feature/3.5.x/PE-3076-support-dynamic-http-client-class

(PUP-2096) Support alternate http client classes in http_pool
Merge branch 'master' of https://github.com/puppetlabs/puppet