Rename codegen function to llvm_module_for_program.

Previously it was just "module_for_program", which is confusing since we
already have a concept of modules in Alamatic that doesn't align with
how we're using LLVM's: we generate one LLVM module for the entire
program.
Use different name for codegen module.

Using the same name for the function and the module causes a label
conflict.
Experimental use of the LLVM optimizer in alac.

This is obviously not how this will finally be implemented, but more of
an experiment to see how the pass manager interface works, and how we
can generate native code. For the moment, we can only generate native
code for the host platform, so more investigation is required to
generate code for ARM cross-compilation.