Add Close() function to Queue, LimitQueue, and PriorityQueue

Used to unblock functions waiting for a queue item.
For example, Queue.RemoveWait() blocks on an empty Queue. Closing
the Queue will cause RemoveWait() to unblock and return nil.