i3companion: Replace notify stub with libnotify

I want this for my libpurple module, but this also allows any other code
that was calling notify to work (e.g. volume notifications, etc).

This code tracks a mapping between the key I was using in wmii and the
IDs returned by libnotify to support the replaces_id parameter. This
will only work if the calling module is long running, which is currently
not the case for the volume and input commands (e.g. repeatedly tapping
volume up spawns many notifications instead of replacing an existing
one), but I'll worry about fixing that later when I daemonise
i3companion.

Because of the fact dunst covers the entire bar and the above mentioned
issue, I've set the default timeout to 1 second instead of 5 as I had it
in wmii to be less annoying.
i3companion: Add libpurple -> libnotify notification redirector

Q: "But DSS, there are already libnotify plugins for pidgin, why do you
need this?"

A: pidgin-libnotify doesn't support finch and purple-libnotify+ crashes
finch.

For this to work, all you need to do is enable the "DBus Example" plugin
in Finch (Alt+A -> Plugins) or another libpurple client and start
purple.py (configs/base starts it automatically at the moment). It
subscribes to the ReceivedChatMsg and ReceivedImMsg signals from
libpurple and simply redirects them to libnotify.