The scheduler class is now capable with dealing with tasks which remove
themselves from the scheduler during execution.
Additionally, some optimizations were applied by use of iterators and
some functions better suited for the purpose.
Please peer-review, all tests pass.