complete rewrite of compiler interface

The treatment of modules before was slightly too broken in various
places.

The new version has simpler functions for compiling a single
declaration/list of declarations; in particular these functions don't
generate code for top-level exception handlers or printing.

There is a new wrapper function for compiling a list of declarations
(only) that does the exception-handler wrapping and optional printing of
values.

compile_top calls this wrapper for a module (without printing) then does
module output printing itself. For a non-module declaration, it also
calls the wrapper, with a singleton list and printing on, and does
constructor name printing itself if necessary.

For bootstrapping, I imagine we can use this wrapper too, and just live
with the unnecessary exception-handler and module-name-or-output
(printing is on iff there is no module name).

The rewritten implementation passes the compiler tests, but of course
the proofs are completely out of date and broken.