Fix/fix bug with rescheduling failed tasks

For some reason it is not possible to prepend tasks to the task list safely. This pull request reverts that change.
Also, the start time of a task should be considered the point at which its start() method is called, not the point at which it was initialized.