Dynamic length validation

[#56005352]

The validation on Module::Instance association length is more
complicated than either 0 when unsupported and 1..∞ when supported: some
module types have associations that are completely options and so are
0..∞.  Because of this variability, the SupportValidator and supports?
mechanism was removed in favor a DynamicLengthValidator and allows?
mechanism.  DynamicLengthValidator works the same as a normal
LengthValidator, but asks the record for its
`dynamic_length_valdiation_options(attribute)`, which allows a
Module::Instance to have given length options based on the `#module_type`,
which is now delegated to #module_class.