codegen: MAJOR refactor to visitor pattern

* extracted various codegen() functions to CodeGenModule and CodeGenFunction
* cleanup on Type generation system (extracted from Type.cpp
* generate LLVM code per Package (Module) instead of c2 file

This also brings the code much closer to clang's code. So It's easier to
reuse components.