Removes deleted workers from task.workers

After deleting workers, they remain in each task's worker list. This breaks the
unique pending counts in the scheduler, as tasks have appear to have multiple
workers even when only one of those workers is active. This fixes that issue by
removing deleted workers from each task's active list.

I also moved the stakeholders update into SimpleTaskState, as that should really
be the only place where we modify task properties.