Fixed comparison of nicknames to assume ascii and that '~' == '^'.

'~' is not actually an allowed character in nicknames but rfc2812 does define them as equivalent to '^', so for completeness sage I added it.

The real issue:
str.lower() takes locale into account, which could cause some nicknames
that are not equivalent to be treated as equivalent. Probably not in the
narrow character range allowed in nicknames, but better safe than sorry.