1 - We need a Role for Moose::Meta::TypeConstraint to define the interface we are decorating
2 - we need a Role or some way to detect when there are parameters attached to the type
4 ??Do we need some sort of Factory for controlling the creation of types?
6 Moose::TypeConstraint->create_base(%opt);
7 Moose::TypeConstraint->create_structured(%opt, %signature_opts);
8 Moose::TypeConstraint->create_parameterized(%opt, %);
10 then a ...->create(%opt) that chooses one of the above????