(#22288) Add methods to access all parameters of a type

Without this commit there is no simple way to access all parameters of
a type. There is also no simple way to iterate over them. There is
currently a method that will return a list of all parameters that have a
value assigned, however, they are duplicates of the actual parameters. This
means there is no clear way to perform an operation on all parameters at once
that will have lasting side effects.

This commit adds functionality needed by the solution to ticket
(#22288).This functionality this commit adds includes a method to collect all
parameters that currently have a value assigned. This commit also adds a method
to iterate of the collected parameters that currently have a value. The intention
of these methods is to allow things like post catalog compilation hooks to be possible.
(#22288) Add post_compile_hook to Puppet::Parameter

Without this commit there is no message sent to parameters (and
subclasses thereof) to indicate the catalog has completed compilation.
This is an issue for any parameter that is not based on
`Puppet::Type::RelationshipMetaparam` and needs to do something on
completion of catalog compilation. An example for such application would
be verifying some other resource made it into the catalog so that a
value may be used fro it for the current type.

This commit add an enhancement to the `Puppet::Type#finish` method. This
method will now list through all parameters, including
`Puppet::Type::RelationshipMetaparam` parameters, and call the
`post_compile_hook` method if implemented. This commit also adds an
abstract method comment to `Puppet::Parameter`.
(#22288) Add tests for new methods in `Puppet::Type`

Without this commit there is no way to test the functionality
added to access all parameters in `Puppet::Type`. The functionality
being tested consists of two new methods to access all parameters that
have values set for an instance of `Puppet::Type`.

This commit adds three tests to the 'spec/unit/type_spec.rb' to test the
new behavior.
(#22288) Add test coverage for `post_compile_hook`

Without this commit there is no way to test the functionality surrounding
the `post_compile_hook' for parameters. The functionality mentioned allows a
`post_compile_hook` method to be implemented by any parameter. This hook is
called on the parameters from the `Puppet::Type#finish` method.

This commit adds a new test to 'spec/unit/type_spec.rb' in order to validate
the new behavior that has been added.
(maint) Comment clarification, whitespace cleanup.
Merge branch 'pull-1853'

This closes GH-1853