Global compiler

I did some final clean up and I think the global compiler is ready to be merged into master. I moved the virtual compiler into its own branch.
There's another definition of this further up in the file.