IRC commands: Handle IllegalStateException in the same way as IllegalArgumentException: call help() and wrap in BadCommandInvocationException.
Improved exception handling.
UI: Do not close chat room window immediately for 'leave' command.

Do not close chat room window immediately. Instead, wait for
localUserPresenceChange event to signal window close. Then, if event
arrives just after a message has arrived, let it ask for confirmation.

Currently it asks for confirmation twice: first upon clicking leave
button, then upon receiving presence event.