Single garbage collection queue

Rather than each multiplexer thread having its own garbage collection queue,
there's now a single queue that all threads share, and each thread maintains an
iterator that references its position in the queue.

This change set lays more foundation for getting away from having multiple
containers in the multiplexer and for moving towards having only the Signal Map
container with zero-allocation linked lists for the Ready Queue, Timeout Queue,
and Wait List, and Garbage Collection Queue.