Reorganization of JIT exception handling code.
Rewrite the interaction of the compilation module and runtime module.

With this change, the compilation module starts out empty and function
declarations from the runtime module are copied into it on-demand.  Function
bodies are not copied; instead the generated code makes function calls to
implementations staticall]y compiled in the main binary.

This approach dramatically reduces the amount of code generation required.
As currently implemented, it has the disadvantage of preventing function
inlining, which will be important for generating high-speed code, so when that
becomes a performance issue this will require some rework to allow function
inlining.