A compiler run. Exports various methods to compile source files
TODO: There's a fundamental design problem here: We assemble phases using
when we first build the compiler. But we modify them with -Yskip, -Ystop
on each run. That modification needs to either transform the tree structure,
or we need to assemble phases on each run, and take -Yskip, -Ystop into
account. I think the latter would be preferable.
Print summary; return # of errors encountered
The context created for this run