Store export statements.

The abstract syntax only accounts for a single name to be exported,
so exports of multiple names are desugared into multiple export
statements.
Process export statements (almost done).

To actually store the binding we construct (in the commented-out
line with "tell"), we need to be in some Writer monad that collects
bindings for the module we are building, so this part is deferred.
Lift Errors and Log interfaces over WriterT.

This is necessary because we want to use WriterT in processFile to
collect the bindings for the current module.
Execute processStmt in the Writer monad to collect bindings.
Actually collect bindings.
Support 'module' and 'export' statements.
Move file processing to a separate module.
Move abstract syntax for modules to PTS.AST.
Implement abstract syntax for import statements.
Implement concrete syntax for imports.
Implement printing of module names, import and export statements.
Add stub for import processing.
Use record update to set options.
Add command line option '-i' to set search path.
Implement search path.
Fix typo in variable name.
Move path handling out of processFile.
Add Show instance for module names.
Expose the parts of a module name.
Implement equality of module names.