Minor tightening of wildcard type handling for component type rules.

+review REVIEW-5081
Some slightly stronger typing when extracting model rules from classes.

+review REVIEW-5081
Make it slightly more explicit why we are needing to do type gymnastics when creating binaries.

+review REVIEW-5081
Remove some duplication by having component model rule definition handlers provide registration functions instead of mutation rules.

 This also remove some “loose” use of Inputs, where the input declarations where specified in one place and consumed in another.
 This can easily go wrong if one side drifts.

+review REVIEW-5081
Inject the registration action, instead of using an abstract method.

+review REVIEW-5081
Unpack more of the base component rule definition handler to not require abstract methods.

 Motivation here is less boilerplate for subclasses, stronger typing, and more clearly defined semantics.

+review REVIEW-5081