Quite big refactor. Now all chat message handling is done through Conversation
objects.  Each plugins can listen on multiple conversations.. with special
filters, or the default filter (which goes through all the declarative
message filtering constraints).

TODO: implement Close() conversation removal.
TODO: implement managing loop for Conversations, with Reset() and Close()
channels.

Unifies "ChatConfig" and ChatHandler through a Conversation.

Conversations can now be added ad-hoc at any time, and removed after a
certain duration, or time.

TODO: implement a TimeoutFunc callback.