Make pretty printing for types prettier
Get patterns to type-check with the value in the case expression
Fix type constraints for PData

Was generating functions based on free type variables, not on the kind
of the constructor.
Fix type constraints for case-expressions