(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) 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-1057) Remove the function stubs for collect and select

These functions are just stubs that raises an error, and they are
no longer needed.
(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.
(PUP-2755) Fix issues after changes from PUP-514

This fixes merge issues that were not automatically done due to files
being moved and changed structurally.

The support for captures_rest was lost. This is now reinstated in
the shared IterativeSupport module and in reduce and slice where the
semantics of "serving_size" are slightly different.
(maint) Add doc stub for 4x function assert_type
(maint) Add 3x function doc stub for 4x function each
(maint) Add 3x function doc stub for 4x function filter
(maint) Add 3x doc function stub for 4x function map
(maint) Add 3x function doc stub for 4x function match
(maint) Add 3x function doc stub for 4x function reduce
(maint) Add 3x function doc stub for 4x function slice
(maint) Update function 'with's documentation with an example
(maint) Add 3x function doc stub for 4x function with
(maint) Remove dead test code
(maint) Fix stylistic issues from review
(PUP-2755) Remove special handling of iterative functions / cleanup

This fixes comments from review. It also removes the special
handling of the iterative functions (special case to avoid
having their arguments transformed) as this is no longer needed.
(maint) Fix stylistic issues from review of PUP-2755