Keep only one global task pool.

Switch up the task pool implementation so there's only ever one. This
should simplify interactions with the pool without sacrificing any
overly useful functionality.

The change should also allow sharded locking of the staging area which
might give a nice performance boost with smaller work items.