IR Caching Support

Enabled caching of the IR generated by llvm, which means that on
subsequent executions the module IR can be simply read in from memory
and the state executed,