Step unifying
Add UnsolvedConstr type.
Use one variable.
Make codes more abstract
Support the forall type on type context.
Add extracter for type schema.
Implement type schemas.
Use Data.Set
Code sharings
Gather up all instance defs.

I don't know what is the best way to manage instances :/
Rename
Merge branch 'let-polymorphism' (early part)

Conflicts:
	src/TypedPerl/Substitute.hs
Make test results more readable