Run the unbound tasks on thread 0
Instead of picking the threadid randomly for unbound tasks, always run the unbound tasks on thread 0. This makes the task scheduling system more predictable.
Most of the code where this might create contention is already using bound tasks (one-per-cpu) and the rest of the contention critical should be converted in subsequent commits.