ENH: Unify restarting logic for Contexts

In the future, it might be useful to unify the "resubmission" or "restart" logic of the various workflows in a central place, for instance as mixin oder in TaskContext.

At the moment, it's implemented in different places, doing almost the same thing:

My suggestion would be to just say "if the .run() method of a Context returns False, then try to restart".

(In the same refactor, we should probably also look into the distinction between workflow and context... it's a bit unclear to me what exactly is meant.)

Edited by Marcel