prepare for generating LLVM IR

- add LLVM context and IR builder
- generate an empty module
- make an exception for code generation
- update compiler::compile() to show generated LLVM IR