Generalize user defined function return type handling.

I'm gonna need functions to return class objects, so generalize
the output types of user defined functions.
Implement class constructors.

Class constructors are the "new" method in a class description.
Elaborate the constructor as an ordinary method, but the only
way to access this method is to implicitly call it. The elaborator
will take the constructor call and generate a naked "new" expression
and implicit constructor method call with the object itself as the
return value.
Parse to pform shallow copy "new" expressions.
Support shallow copy as far as the ivl_target API.
Code generation and runtime for class shallow copy.
Elaborate classes in lexical order so that mutual references work.