Following on from #100
Support taking a pickle based snapshot of the execution graph in the case of a failure.
This would then mean being able to benefit from re-runs where execution can continue from where it left off without having to save each intermediate result.