Type Definitions and Prototypes

Originally this was implemented with a 'module' keyword.  I've changed my mind here, and now am including module-type support int he main program flow as top-level statements.  Simpler, and got the job done really quickly.  Some of the module parsing is still left over.
Merge branch 'feature/declarations'