support constraints on type constructors
minor cleanup
added tests for type constructor constraints