Eliminated an opportunity for deadlocks.

Rule of thumb: if there are 2 queues in a system, make sure there is never more than one in a suspended state.
Various little fixes with a little cleanup.
Tweaked a variable name for clarity.
Added a thread-safe cleanup method to clear references held by an empty GCD channel.

When the channel is empty, the cleanup method can be triggered to clear up references which are stored but are no longer needed.