circe-ctcp-CLIENTINFO-handler: support this CTCP request

This replies with a list of supported CTCP requests.
circe-ctcp-SOURCE-handler: add

CTCP SOURCE replies with the github URL by default.
circe-server-display-message: clean up CTCP display code

Pull out generic CTCP-displaying code, and be less repetitive when
displaying unknown CTCPs and responses. Also, actually use regex match
results where necessary.
circe-add-message-handler: make idempotent.

Closes #55.
Message options: New interface.

This commit introduces a new interface to influence Circe's message
handling. This replaces the old ignore and fool handling as well as
the default properties interface.

The new `circe-message-option-functions` is called with five
arguments, NICK, USER, HOST, COMMAND and ARGS, and the returned
options are merged together. This hook can be called in channel or
query buffers, too, and can adjust its behavior accordingly.

The available options are dont-reply, dont-display, hide, all of which
are booleans with the default nil, and text-properties, a list of
default properties to apply to the message, if any is displayed.

Message handlers should use `circe-message-option' to access these
options when needed.

The default settings use `circe-ignored-p` and `circe-fool-p` as
before.