Add support for multiple-constructor datatypes with fields.
This is the naïve implementation that will not try to use the same
storage space for fields from different constructors, so it might
quickly become inefficient with bigger datatypes. For simple types like
the Maybe type, this should be fine.
The support is not quite working yet, for some reason these new types
are not marked as representable. This is cause because the type
substitution in mkTyConHType does not work for some reason, so the field
type of the Just constructor in (for example) a Maybe Bool type stays
"a" instead of "Bool".