The 319 message that indicates which channel(s) a user is in prefix the
channel name with the modes (@, +, !, etc.) applied to that user. These need
to be stripped from the channel name before we feed it to
irc.state.channels.get(), otherwise when irc.state.channels.get() returns None
we assume the channel can't be private and leak information.
(cherry picked from commit 408ab6f88a)
Tons of changes. Here's the summary of things that matter most:
* There is no more supybot.fix.
* There is no more supybot.webutils; now there is supybot.utils.web.
* It's no longer webutils.WebError, but just utils.web.Error.
* You shouldn't import itertools, ideally, but instead import utils.iter.
* No more using imap/ifilter in commands unless absolutely necessary. It's
premature optimization and annoying.
* utils.str.format isn't quite ready yet, but will be soon. That'll be the
next big thing to fix in our code.