Added support for automatic optimized code generation.

Use command "make optO0", "make optO1", "make optO2", or "make optO3" to get specifically generated LLVM IR. Use "make" or "make all" to generate each level of optimized LLVM IR at once.