(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).
(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) 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-2747) Add support for multiple profilers

This commit makes a slight modification to the profiling system,
such that we can register multiple profilers at the same time.

This allows callers to register their own profiler without
worrying about collisions with profilers that might have
been registered by other parts of the code.
(PUP-514) Add support for optionally typed parameters.

This adds support for typed parameters in the ast model, the
grammar, and factory.

At this point, the information is only remembered, but not acted on.
(PUP-514) Add test for parsing of typed parameters

This updates the tree dumper to dump parsed type information
for parameters.
(PUP-514) Add validation and test of 'captures-last' parameters

This validates that only functions may have captures-last, and
that it may only be placed last amon the parameters.
(PUP-514) Add test for validation of 'captures rest' in lambdas
(PUP-514) Support last_captures_rest for lambdas

This adds the ability to define a lambda with "last-captures-rest"
semantics and to call it.
As a consequence, when a lambda with last captures rest semantics is
given to one of the iterative functions, a serving size of two
parameters is assumed
(PUP-514) Add support for opt-in typing of define/class parameters

This makes define and class parameters support optionally typed
parameters when using the future parser. The type expressions
are evaluated by the Pops Bridge when parameters are transformed t 3x.
The 3x parameters are not aware of type information (they are encoded as
arrays), and changes to all the logic that deals with parameters turned
on to not be a good design. The resource type and resource is instead
made aware of the opt-in types via a separate param-name to type map
that it applies in the validation step that was already performed.
(maint) Improve comment and formatting in test.
(PUP-514) Change warning to debug, and add validation of type expr

This changes the warning issued on the code path when a resource type
is required in order to do deserialization (apply phase). When this
happens on the server side (or during apply), the full source is
available, and the type in "known resource types" is loaded code that
may have typed parameters. This second time, no validation can and will
not take place because it is happening where there is no top scope
available. (This is fine, and should use result in a debug output).

This also fixes a couple of typos.
(PUP-514) Fix issue with case when inferring a Resource type

When the type calculator was inferring a Resource type, it assigned
an upper case name to the type_name in the resulting PResource type.
It should have assigned a lower case name.
(PUP-514) Change Puppet::Resource inferece to be Type[Resource]

This changes the inference of a Puppet::Resource to be
Type[Resource], instead of Resource. This because a Puppet::Resource
plays the same role as PResourceType - it is a reference to either
all instances of a resource type, or to one specific resource type.
(PUP-514) Accept Resource, or Type[Resource] when forming relationship

This makes forming relationships possible using either a
Types::PResourceType (or hostclass type) and a
PType[Types::PResourceType].

This was changed to allow Puppet::Resource to have the same semantics
as a PResourceType. (Currently 3x expressions produces instances
of PResourceType as the result of a resource expression, this is not
transformed back to a PResourceType, instead it is inferred to be
Type[Reource].
(maint) Remove pending tests for parsing functions in puppet
(PUP-514) Make Puppet::Resource behave as PResourceType wrt access

This makes Puppet::Resource behave as a PResourceType when using
the access operator; to detail a type with a title, or to
access a parameter of a typed/titled resource.

This is done to make differences between 3x and future planned catalog
builder transparent. 4x uses PResourceType as a reference to a
resource (handle/future ref), where 3x uses instances of
Puppet::Resource for both the instance, and references to it.
(PUP-514) Improve/add tests for typed parameters define/class