Support tc-expr and not just tc-expr/check

Note: the type is too conservative in some cases with
      tc-expr (if you leave : annotations out). This should
      be fixed in the future.
Type-check class top-level expressions
Fix top-level use of classes
Better class types when no expected type given
Fix broken test
Fix unsound local mapping and broken code