Separate the CompilerType objects from the class definitions

Most code wants to have access to the basic types (INT, STR, etc)
but doesn't need to know anything about what methods they support.

Move the commonly-accessed parts of compvars.h into the always-included
core/types.h, and remove almost all of the includes of compvars.h