Add stable priority queue for task queue

This is needed to provided FIFO semantics to the task queue
for objects of the same priority.

We only need to be able to preempt workers with high priority
items.  Otherwise everything should be in FIFO order.

Before this, we could potentially deadlock.