(PUP-2190) Fix issue when there are no defaults (for meta params)

When looking up a metaparameter - Notify['foo'][tag], this failed
when no tags had been set. The same problem would occur for any
parameter that the resource api reported to be a vaid parameter but
for which asking for its default did not return a Parameter.
(PUP-2241) Simplify dispatching of logging functions

This uses a simpler dispatching mechanism. Not meaningful to test
against 0-infinity of Optional[Object].
Merge pull request #2507 from kylog/issue/pup-1932/systemd-reports-transient-services

(PUP-1932) Restrict systemd provider to manage file-based services
Reading even old sysconfig file

For compatibility reasons reading even the old sysconfig file although new one
overrides it. But people who have some interesting settings in the old
sysconfig file can still use them unless the are set to something else in the
new one.
Merge pull request #2510 from miska/master

Little bit of systemd unit files polishing
Merge pull request #2531 from hlindberg/pup-2176_restrict-puppet-functions-to-module-namespace

(PUP-2176) Restrict puppet functions to module namespace
(packaging) Update PUPPETVERSION to 3.5.1
Merge branch 'stable'

* stable:
  (packaging) Update PUPPETVERSION to 3.5.1
(PUP-2279) Add support for 'skip_if_unavailable' to `yumrepo`

As of Yum 3.2.26, Yum has had the ability to skip a defined repository
if unable to contact. Prior to this commit, there was no way to manage
this option on a repository configuration.

This commit adds support for the 'skip_if_unavailable' option to the
`yumrepo` core type.
(PUP-2279) Add tests for `yumrepo` type

This commit adds new spec tests for the 'skip_if_unavailable' property
supported by the `yumrepo` type.
Merge pull request #2474 from rrrene/patch-1

Add docs badge to README
Merge pull request #2530 from rra/emacs

(PUP-2237) Updates to Emacs puppet-mode for indentation, XEmacs, file name matching
(PUP-2009) Add acceptance test for dynamic environments

Adds a test scenario for dynamic environment interpolation in manifest,
modulepath and hiera settings.
Merge branch 'issue/master/pup-2009-dynamic-environment-acceptance'

* issue/master/pup-2009-dynamic-environment-acceptance:
  (PUP-2009) Add acceptance test for dynamic environments
(PUP-2284) Add an interview to the PMT `generate` action.

Prior to this commit, when you generated a new module, it created a simple
metadata.json file with the same standard defaults for every module.  Since
JSON may not be the most familiar language for all of our users, we now do
some work up front to pre-fill that JSON file with useful data based on user
input.
(PUP-2285) Integrating the recommended README template

Prior to this commit, `puppet module generate` would create a simplistic
README file for the new module.  This change integrates the README
template we publicly recommend people use to document their modules
(http://docs.puppetlabs.com/puppet/latest/reference/modules_documentation.html).
(PUP-2282) Allow deprecation warnings to supply optional key

Puppet::Util::Logging#deprecation_warning keeps track of issued
deprecations keyed by the originating code line.  This works reasonably
well for tracing API deprecations, but can cause a problem for
notifications coming from internal calls which might happen to be called
multiple times by other code sections. It also causes problems if the
same line of code issues different deprecation warnings (say by
interpolating some parameter into the message).

This patch allows an optional key string to be submitted with the
deprecation_warning which takes precedence over using the
originating call line as the key.
(PUP-2176) Propagate non-autoloaded function to loader

This makes it possible to write functions in site.pp, or directly
in apply -e. When encountered, the PopsBridge will define them in
the appropriate loader.

A new SimpleEnvironmentLoader was introduced (it is basically a loader
that does not find anything, but can be given entries from an external
source). The functionality to instantiate from a model was added to the
PuppetFunctionInstantiator. The ability to produce a URI with the source
location was added to SourcePosAdapter.

The compiler initialization sequence is altered in this commit because
the very early loading and parsing of site.pp (or equivalent), and the
compilers context overrides (environment, injector, global_scope, etc)
was done too late. Now, the overrides are constructed once, but used
twice (in the initvars method, and in the compile method).
(maint) Make context handle lazy initialization

This makes it possible to store a Proc in the context. On lookup
the Proc is called and the result is memoized for subseqent lookups.
(PUP-2176) Use lazy initialization of context in compiler

This makes the compiler initialize its context lazily wrt. the
injector and loader when using the future branch of the logic.

This is required because loaders and injector would otherwise
need to be initialized twice; once for the initial import and
a second time when doing the compilation. Now the values are retained.

The initial problem was that compiler's initial import is triggered
before loaders and injector was initialized (from initvars). This is
required for using logic from the loader subsystem. Specifically for
being able to define a function on the command line using puppet apply.