Adds support for programs with multiple modules.  Greatly reorganizes the module symbol table (ModuleSTab) and "compile" function.  Now, if module A imports module B, then all B symbols ( e.g., B.x ) appear in the A symbol table as external symbols. The B symbol table will actually define those symbols.