nsqd: fix cleanup of Channel.messagePump on delete

when a channel is deleted that has clients and is actively
delivering messages it is possible that messagePump()
will block on its go channel write to clientMsgChan due to
race between that write and the exiting of all clients subscribed
to that channel.

if that happens, the messagePump for the deleted channel
never exits and a reference is retained preventing the
channel from being GCd.
nsqd: discard old channel references

when the channels for a topic *shrinks* we weren't
correctly discarding the pointer to the deleted
channel