compile-assembly: use file-level constants table
* module/language/glil/compile-assembly.scm (compile-assembly): Rework
to handle toplevel-specific code generation here, instead of in
glil->assembly. Specifically, here we build a global constant table,
and arrange for it to be the objtable of the toplevel thunk.
(compile-program): New helper, compiles a <glil-program> and returns
just the (load-program ...) form.
(compile-objtable): New helper, generates assembly to build an object
table, using some other constants table, and possibly recursing to
`compile-program' for cached GLIL programs.
(glil->assembly): Simplify, removing the toplevel? argument, and
replacing the object alist with an objtable computed in a previous
pass. Adapt to the new form of the objtable, and to use
compile-program and compile-objtable.