(#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.