Unsubscribe calls cause subscribe to return

My experience with pubsub is that if you unsubscribe from a channel the
subscribe calls will continue to wait for messages.  This change checks
to see how many channels or patterns are being waited on and if the
number is zero the subscribe call will return.