(PUP-2511) Add parser function digest: uses digest_algorithm to hash, not strictly md5

Puppet has an md5 parser function, which returns the MD5 digest of its
argument. On hosts configured for compliance with U.S. Federal
Information Processing Standard (FIPS) 140-2, attempts to use the MD5
algorithm cause errors, because MD5 is no longer FIPS Approved. This
patch adds a parser function called digest, which returns the digest
of its argument using the algorithm named by the digest_algorithm
setting in puppet.conf. Therefore, where md5 may fail on some hosts,
the digest function should always return a value; but the value may
vary if the digest_algorithm setting is changed.
(PUP-2401) Add ssh_authorized_key acceptance tests

Add basic acceptance tests for ssh_authorized_key type.
This adds acceptance tests for create, query, modify, and destroy.

The query test is set to be skipped because the type cannot
currently be queried by username (see PUP-1605).
(PUP-2578) Unbreak services from packages which set local flags.

So don't add _flags="" for pkg_scripts if no :flags were set, as it
may override the default flags from inside the script.
(PUP-2578) Keep order for pkg_scripts.

Do not unconditionally alphabetically sort the list of pkg_scripts
as order matters. Explicit ordering will need to be forced through
resources dependencies.
(PUP-2578) Tweak #in_base? by not relying on pkg_info, but on /etc/rc.conf which is faster
(maint) Change dev-puppet-master script not to log debug and trace

It is more useful to set this yourself when calling the script,
depending on whether you want --verbose or --debug and/or --trace.
So just:

$ util/dev-puppet-master foo --debug --trace

Also fixed copying of auth.conf (from basic case running script from
repository root).
(maint) Resolve some documentation TODOs in Puppet::Type

Fix some descriptions according to the @todo tags. Some todos were just
to check if the existing documentation was correct. Those were removed
after checking.
(maint) Quote class name in init.pp template

According to the style guide:

All resource titles should be quoted. (Puppet supports unquoted resource
titles if they do not contain spaces or hyphens, but you should avoid
them in the interest of consistent look-and-feel.)

A class is a resource.
(PUP-2703) Make 'tag' be a statement function

Tag function should not require parentheses.
(maint) establish the synonym "composite key" for uniqueness key

The uniqueness_key (as found in the Type class) is an awkward name for
what is similar to the concept of composite keys as found in DBMSs.
This alternative nomenclature was proposed by Henrik Lindberg.
(maint) Partial cleanup of the parameters/properties/attributes documentation

The concepts of properties vs. parameters (vs. metaparameters) and the
generic term "attributes" has been confused in various bits of documentation
of the Puppet::Type base class for resource types.

Clear up some of the comments by making appropriate use of these terms:
 - properties for attributes that are no parameters
 - parameters for attributes that are no properties
 - attributes if both are encompassed
Metaparameters are really just a special case of parameters. They should be
included when properties and parameters are enumerated instead of
just refering to "attributes".

It's also worth to note that since parameters and properties don't share
a common base class (Puppet::Attribute?), a method return or parameter type
that can be either cannot be made more specific than "Object", e.g.

  return [Object] the named attribute
(PUP-2271) Allow yumrepo proxy attribute to be set to _none_

Add fix and test to allow proxy to be set to _none_ to bypass global proxy
configuration for YUM.

See https://tickets.puppetlabs.com/browse/PUP-2271
(PUP-2399) Fix my fix to the fix
Merge pull request #2769 from kurtwall/pup-2399-fix-fix

(PUP-2399) Fix my fix to the fix
(PUP-1057) Remove the function stubs for collect and select

These functions are just stubs that raises an error, and they are
no longer needed.
(maint) Fix typo in yardoc
(PUP-2557) Add deprecation of node inheritance

This makes a deprecation warning being logged whenever a
node is instantiated with a parent in 3x, and a warning is issued
during validation of the source text when future parser is used.

The intent is to remove the support for node inheritance in
Puppet 4.0.0.
(maint) Fix a typo in reserved word symbol
(PUP-2755) Move iterative functions to the new API

This moves all the iterative functions to the 4x function API.
Functions are now simpler to read. A shared utility module
was created for repeated asserts.

While testing it was clear that it is difficult to use
Puppet.lookup(:loaders), and the evaluator was changed to get the
loaders via the compiler instead.

The evaluator tests are changed to make use of the simplified
handling of the loaders.

The tests for the functions that have moved, were also moved, but
are unchanged in what they test.
(maint) Add leaky local scope tests

This adds tests that local and match scope handling is corrent
and does not leak variable bindings.