Added support for automatic optimized code generation.

Use command "make optO0", "make optO1", "make optO2", or "make optO3" to emit specific levels of optimized IR, which is then converted back to C. Use "make" or "make all" to generate and convert each level at once with a single command.