Error if argument to new is not a class.
Clean up runtime error handling.

This is prep work for being able to catch a runtime error from
another fiber.
Add support for block arguments in method calls.
Convert fiber tests to use block arguments.
Change how new operators are compiled.

Instead of an instruction that always instantiates an instance,
the "new" is compiled to a method call on the class, followed by a
method call on the (presumably) new instance.

The former lets built-in types like Fn do special stuff instead of
allocating an instance. In particular, it means:

  new Fn { ... }

can just return the block argument.
Convert all fns to block arg syntax.
Remove old function syntax.