Actually fix the issues with multiple users disconnecting rapidly.

If multiple users disconnect very quickly, one or more users might
have closed their connections between the time we decide to send
them a message and the time we actually send the message.  In that
case, just ignore the exception.  The user is already gone anyway
and therefore doesn't care if we have messages to send.
Don't allow a user to join a channel until he/she/it is registered.
Do nothing if a user reJOINs a channel of which he/she/it is a member
Better handle PARTing a channel that a user has not joined.
Require a user to be registered to send certain commands.