Fix broken job restarts after failures

Fixes #115 

When a job fails, the snapshot of the DAG is deleted, just like during completion. When we retry, the snapshot is not recreated, causing errors when trying to reach the next task after the failed tasks.

The fix is a simple one line addition to recreate the snapshot at the beginning of retry() and add a test case that tests this particular use case.
the danger of event hooks is if the event never stops running (ie we need to time out, which is what this is supposed to simulate)