Implement support for ICB bricks.
In order to do this, some generic changes are needed. For example, this
adds a 'sendUserCommand' method to the chat connections that allows the
user interface to send a command to the server directly, but permits the
connection to process it first. This is meant to replace sendRawMessage
in almost all cases. This way, ICB can handle the common "/brick" command
and send it to the server as needed, yet other protocols don't have to
handle it in any way.
Unfortunately, this adds ICB-specific features (bricks) to generic
interfaces. But they currently contain stuff such as "modes" and "bans",
which are also specific to some protocols, so it's not a very big deal.
Reviewed by timothy@ and fixed according to his comments.