Resolve aliases of aliases
Introduce include declarations that allow defining a program using multiple
files.  The syntax is very close to c++ without the leading preprocessor char.
To be clear, this is NOT a preprocessor or anything like it.  The semantics of
the declaration are quite different in that the included file gets builtin to
the target.  We don't need header guards or anything like that as the compiler
takes care not to generate code for the included file more than once.  The
upshot is that this essentially allows the language to define its own build
system.  For an executable, you can just pass the file containing the main
function to the compiler and all the includes will take care of building the
rest.

This patch also introduces the very beginning of what will be come the core
library for the language.