applets/notifications: Major refactor, more robust.

We now handle notifications in a single idle management function, which
only performs when notifications are present. As soon as all notifications
have disappeared we disconnect our timeout.
Notifications match the freedesktop spec by ensuring a unique ID for
each sender message, allowing clients to replace one of their existing
notifications with a new one, i.e. for music players that merely wish
to update a potentially visible playlist notification.