(PUP-3511) refactor Application.run for reuse

Extract a small chunk of code from Puppet::Application.run into its own
method so that it can be reused.  This code is currently duplicated in
Puppet Server; the introduction of this new `reset_environment_context`
method enables the replacement of the duplicated code in Puppet Server
with a call to this method.
(PUP-3511) refactor 'configure_indirector_routes'

Add a `self` version of `configure_indirector_routes` which takes the
application name as a parameter.  This method is currently copied into
Puppet Server, and the new version of it will allow for the duplicated
version in Puppet Server to be deleted.
(PUP-3511) introduce 'ApplicationSupport' module

Introduce a new module named 'ApplicationSupport'.  Move
'configure_indirector_routes' into this module.  Move
'reset_environment_context' into this module, and rename it to
'push_application_context'.
(PUP-3511) yardoc for 'push_application_context'
(PUP-3511) update docs in 'ApplicationSupport'
(PUP-3096) Remove deprecated trusted_node_data and immutable_node_data options

This commit removes the deprecated trusted_node_data and
immutable_node_data options from puppet/defaults. This ensures
that $facts and $trusted are always available so that we can
start phasing out facts as top-scope variables.

This commit is part of the Puppet 4 code removal effort.
(PUP-3512) Remove the old Profiler profile API

Remove the old Profiler profile API, which supported calls to
profile without a metric ID. Remove tests that ensured the
old API worked.
Merge pull request #3308 from fpringvaldsen/PUP-3512-profiler-deprecation

(PUP-3512) Remove the old Profiler profile API
Merge pull request #3298 from KevinCorcoran/PUP-3511/introduce-method-for-reuse

(PUP-3511) refactor Application.run for reuse
Merge pull request #3309 from whopper/pup-3096/removal/trusted_node_data

(PUP-3096) Remove deprecated trusted_node_data and immutable_node_data options
(PUP-1035) Remove server component from pluginsource and pluginfactsource

Previously, the pluginsource and pluginfactsource settings would always
use the $server as the host component for their respective URLs. This is
fine for non-SRV environments, but is not compatible in SRV
environments.

This change will allow pluginsync and pluginfactsync to use SRV records
to determine which host to connect to. This change should not affect
environments where SRV records are not being used.
Merge branch 'pr/3311'

* pr/3311:
  (PUP-1035) Remove server component from pluginsource and pluginfactsource
(doc) Document acceptance test dependency on wget

Acceptance tests of pre-built packages relies on having a local
installation of wget on the system where you're running the rake task.
This comment explicitly mentions that, as the error message that wget
failed isn't completely obvious where it occured.
Merge pull request #3313 from MikaelSmith/docs/master/acceptance-wget-dependency

(doc) Document acceptance test dependency on wget
(PUP-3388) Differentiate between single and multi mirror and raidz pools

Previously, the acceptance test attempted to create a single mirrored
pool with 3 virtual devices, and a single raidz with 3 virtual devices.
The syntax does not match the type specification, which says:

    List of all the devices to mirror for this pool. Each mirror should be a
    space separated string.

And the same thing for raidz.

This commit modifies the acceptance test so that it uses valid mirror
and raidz syntax. It can either be a single pool with multiple devices,
e.g. mirror => ['a b'], or multiple pools each with multiple devices,
e.g. mirror => ['a b', 'c d'].
Merge pull request #3314 from joshcooper/ticket/master/PUP-3388-zpool-acceptance

(PUP-3388) Differentiate between single and multi mirror and raidz pools
(PUP-3274) Make 4x recursive directory import the standard.

This behavior was conditional to the future parser being used.
With 3x, only the top level directory was scanned for .pp files
to import, and when future parser was in effect, the search for
.pp files were recursive.

Now the future parser behavior is standard.
(PUP-3274) Make the defined function support 4x arguments as standard

The defined function in 3x with future parser added support for type
references. This commit makes this behavior standard in 4x.
(PUP-3274) Make lookup function be available as standard.

The lookup function was conditional on future parser being used.
It is now always available.
(PUP-3274) Make handling of strict_variable the 4x way standard.

The handling of the strict_variables option was different in 3x
and 4x where the later used a more performant throw construct.

This commit makes this behavior standard.