Synthesize types for private fields in classes

Allows type annotations to be left out in some cases
Rewrite TR pass for class top-level expressions

Instead of making separate passes over the expressions,
make a single pass to collect necessary information for
type-checking.

This enables simpler processing of type annotations,
super initialization arguments, and other things.
TR: fix error case when superclass is not a class
Improve TR's check for by-name superclass inits

Make sure to check that by-name inits are actually accepted
by the superclass and produce a good error when they aren't.
TR: better error for invalid super-make-object