[BZ 1120418] more refactoring for continuing job after failed step

A few things happen when there is a step failure, and we can continue the job.
We need to determine if any steps need to be added to or removed from the
current job and then make those changes in the database. Then we need to create
a new job for the failed step and add it to the job queue. Lastly, we need to
reload the current job to pick up any changes to it and resume execution.
Currently resuming execution is done via recursion which I don't like. I think
this can be refactored to be done iteratively without too much effort. I will
look to make that change in a subsequent commit after some more testing.