Change AST: Combine Def and ForeignDef into single type

Def and ForeignDef are now both data constructors for the Def
type. The Module type now contains a single list of Defs, rather
than a list of Defs and a list of ForeignDefs.
Add another test for the lexer.

Test that a small program tokenizes correctly.