Revised hook for determining all type variables occuring free in a given type.
Rewrote error messages for constraints.

Instead of using a variable for error messages in the Constraint trait,
an explicit wrapper class is used ta annotate a constraint with an
error message. This fixes bug #1.