Expand the scope of the crypt module.

I recently noticed that actions were not encrypted, after reviewing the code I realized notices, actions, and channel topics all lacked encryption. This patch is a first attempt to add that in, I am open to all comments or suggestions for this patch set.

I have refactored it into a couple distinct sections, the notable ones are: incoming, outgoing, filters.

I also realized in my refactoring that we're not properly sending the messages to other connected clients. Because we need to send the unencrypted messages some code was more or less duplicated from Client.cpp to make this possible.
why c_str()?