Don't use a (smelly) abstract base class, separate task result storage into its own interface and use composition.
Nicer interface
Forgot to set status to success.
Separate task creation interface out of task evaluators.
Restructure packages
More restructuring
Rename
Separate task queuing and task evaluation.
Move responsibility of maintaining the current evaluating task, and if it was delayed, to TaskEvaluationQueue.
Use a boolean to indicate evaluation in a cycle, instead of a separate method.
Instructions must always be constructor applications.
Merge branch 'cleanup-2'