Add ability to immediately shutdown executor

Switch the task queue to a priority queue and allow
ShutdownThreadRequest (which originally were just the QUEUE_END_SENTINEL
object) to have a more important priority in the case that a user
has hit Ctrl+C.
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.
Merge branch 'immediate-s3-exit' into develop

* immediate-s3-exit:
  Add stable priority queue for task queue
  Add ability to immediately shutdown executor