Introduction of TaskRepresenter

This closes #885

This PR is part of the longer term goal of rewriting the Driver code into smaller units. It introduces a new class `TaskRepresenter` which represents a running Task on the Driver. It is is responsible for taking action on Task status messages sent by an evaluator. It is in that capacity that #885 is addressed by ignoring repeated INIT messages from Tasks.

Also, this adds `TaskCountingTest`, which checks that we never hand a second `RunningTask` event to the user. As this test needs to run for a long time to trigger bad behavior, it is not part of the `AllTests` suite. Instead, I added a new test suite called `ProbabilisticTests` where we can collect those tests.
cosmetic fixes
Merge branch 'weimer_885'