(#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 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_catalog_compile hook

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_catalog_compile` method if implemented. This commit also adds an
abstract method comment to `Puppet::Parameter`.
(#22288) Add tests for code added in 37592c9

This commit adds two tests to the 'spec/unit/type_spec.rb' to test the
behavior added in commit 37592c9.
(#22288) Add test coverage for code in 9b6aef0

This commit adds tests to validate the behavior added in commit 9b6aef0.
The code being tested adds the ability for a `post_catalog_compile` hook
to be added to all parameters.