Remove clients instead of just closing their channel

This still leaves 0-length lists around, but I don't think spamming
requestListen() in broadcast() is such a hot idea.  Instead, the
"main routine" could periodically clean up channels with no listeners.
That code needs to exist anyway, I think, because requestListen() might
fail in Unlisten() under "normal" conditions.

Unless there's a way to avoid the requestListen() uglity altogether..