Started working on code generation.

Implemented the IReducible interface for AST nodes. ReduceLeft traverses first children then parent, and ReduceRight vice versa.
Finally got a hang of how the code generation monad should look like. Got the basics now in place. Need to add more flesh around the bones next.
Minor addition to code generation.
Intermediate commit. Thinking of simplifying the

type environment a bit.
Limited the type environment to a single namespace.

Types are no longer the top level scopes. Modules
are the containers for definitions. Unlike types
modules cannot be nested.
A minor fix for eq? function.
Added parsing and viewing for modules and definitions.

Fixed a nasty bug of reducing list recursively in the
AST tree.