Added cancellation of LR execution functionality

@lukechurch
I think this may not work as we could return from a nested call and the execution may continue in the outer call, which is not what we want in a cancellation case. We want the entire callstack to unwind and return from it in order to terminate execution.