Have ETupProject carry the type of the resulting expression

This means recoverExpType works for nested tuples, and we can re-enable the type
checker.

There are some places where I didn't bother to correctly determing the resulting
type, in which case you'll get an error if you try to recover the type of that
expression. Oh well...