Gut out types, preprocessor and codegen in preparation for a rewrite.

The design of these parts got pretty messy and hard to follow, so we're
starting over with a simpler design.

The first part of this redesign is actually embedded in this patch: the
parser and AST no longer have any knowledge of types, and concern
themselves only with syntax and intermediate code generation respectively.
The type inference phase of the preprocessor will be the first subsystem
to consider types at all.