parameters: relax type checks
Previously, the type check of the Param class did only allow
the parameters to only have a value that's of a direct type.
However, that's nonsensically restrictive. For example, if
there's an interface implemented as an `ABCMeta` class then
the check for type fails since the interface's type is
`ABCMeta` instead of directly a `type`. Among others,
this is the case for cryptography.x509.Certificate.
Being a type is a transitive property of a Python object and we
should respect that in our framework.
Reviewed-By: Fraser Tweedale <email@example.com>
Reviewed-By: Rob Crittenden <firstname.lastname@example.org>
Reviewed-By: Martin Basti <email@example.com>