Initial module support

This is achieved with a few changes:

- All labels in the generated code are prefixed by the module name. This
  allows them to be exported freely without any worry of a conflict.

- A new "require" function is added to the language. When encountered,
  the corresponding source file is compiled.

- Each compiled file puts its initialization code in an "init_<module>"
  function that is called by the code that is doing the "require". Each
  compiled file also saves its root frame so that these accessor
  functions can look up the local definitions when the function is
  called.

- A new "module-export" function is added to the language. Any exported
  definitions result in a globally accessible accessor function that can
  be called from the requiring code.

- Identifiers (vars) of the form module:symbol are now supported by the
  language and are treated specially; using this identifier calls the
  accessor for the "symbol" definition in the "module" module.

The support is not perfect, but this is the initial attempt at it.
Name normalization for multi-module support

Multi-module support introduced two problems with naming:

- Modules could be named with characters that are invalid as assembler
  labels (such as using a dash). Multi-module support added the module
  name as part each label.

- Members of modules could be named with such characters as well. This
  was not initially a problem because all symbols were looked up with
  the name as a string, specified as the key into a hash table. Now,
  some of these symbols are exported, and they generate globally
  accessible assembler labels.

One option is to simply strip out (or replace) these offending
characters. However, that would cause a problem if we had two modules or
members that differed only by that character (e.g. a-b and ab). Thus,
the solution is to do two things:

1. Replace these characters.
2. Append a hash of the *original* name.
Initialize each module only once

This allows multiple modules to require a single module.