Have PolyRow take lists of names

This makes the interface identical to the other Poly
types, which makes the code easier to understand. Note
that a single name is still expected in the list.

This also involved some changes to tc-funapp handling
of failure and changing how row inference is used.
Fix row type inference
More types
More fixes to adjust PolyRow interface

This unbreaks row polymorphism
Fix framework type
Fix parse type tests for last commit
Fix totally broken equality check
Add class sealing contracts
Add a row constraint environment

This allows row constraints to be properly checked
for compatibility with class types during parsing.

In a later commit, this will be used for contract
generation.
Fix sealing contracts when used with class/c
Do sealing contract generation from mixin types
Fix some types