Updating the RSS module to work with ZNC partyline

ZNC party line channels start with `~` characters (e.g., `~#bot`). This commit allows Willie to work with ZNC party line channels that contain this character.
[youtube] Fix unicode errors
[Many modules] Add unicode_literals import

Also add #coding: utf8 line

This is probably going to force a lot of errors up, but they were
already hiding there anyway.
[ipython] Add ipython module

This module allows you to open an IPython console in module context.
If you want to debug willie in real time, or experiment with the API given to
modules, this module is for you.
Fix typo in exception message
Merge pull request #522 from singingwolfboy/fix-typo

Fix typo in exception message
[units] cm to meter should not be a floordiv, 150cm = 1.5m, and not 1m
[units] Add test for 150cm case
Merge branch 'warddr-bugfix_units_cm'
[core] Fix typo in module shutdown method handling

I have no idea how we did not notice this until now. Maybe it means the shutdown
interface isn't that useful :)
[tests] Ignore ipython.py

People shouldn't have to install ipython to use willie. It's a 100% optional
module
Tests failing because of it is silly as it doesn't (and can't) have any tests in
it.

I also added a comment to conftest.py explaining the reason for its existence.
[core] Some minor fixes to make PEP8 happier

It kinda makes stuff more readable, unlike some other PEP8 warnings
[core] don't fire loop protection if last message was more than 5 minutes ago

Many people complained that loop protection was too strict, as it considered
same message repeated after several hours as "loop". This change makes loop
protection less strict by checking the last message time stamp. If last message
was sent more than 5 minutes ago, it won't treat the situation as a loop.

I also cleaned the loop protection code, and added more comments to explain this
slightly cryptic portion of our bot's core.
[test] Actually blacklist ipython.py

Apparently we need full relative path, and not just filename. Makes sense.
[core] Make WillieWrapper a bit more ipython friendly

This change will make tab completion in ipython for WillieWrapper (usually named
`bot` in module context) better by showing properties of the wrapped bot and not
just properties directly in the wrapper class.
[coretasks] If an untracked user left a channel, don't complain

This is related to issue #365
Altough I have not managed to reproduce the issue myself, wrapping the `del`
call in a try-except block is something to do for KICK already. It makes sense
to do it for PART too.
Merge pull request #424 from mtdowling/master

Updating the RSS module to work with ZNC partyline
[tools] use unicode_literals

This fixes an issue which prevented usage of unicode strings in commands()

Fixes #517
[ipython] Make ipython work for Python 3 as well

Account for an ipython3 quirk that makes it require unwrapped stdout/stderr for
the import as well.
[core] Make sure callables without rate limit will never get rate limited

Fixes #239
If func.rate is zero or None (as None > 0 == False), don't bother going into
the rate limiting code. This prevents the race condition described by @Venti-
in issue #239