improved 'codegen' abstraction layer, 'compile' no longer has any text hacks to direct LLVM output... everything is behind CodeGen methods. this is to make alternate back ends (LLVM,C++,...) easier