Add Iterator Stages


Currently stages are "monolithic". They receive input and as long as they work on it they occupy a thread. Only after the stage function finished the CCR gets the chance to run another stage.
For longer running (or multi step) stages that´s not really cooperative behavior. To improve the situation, stage functions should be able to return IEnumerable<ITask> and run as an iterator. The CCR makes this easy. Then on each yield return another stage could run.