Change compiler to use llvm contexts rather than one global context allocated during static initialization, much cleaner this way