Bug fix: add enabled/disabled guards to notifiers.

Also handle the case when user disables notifiers after the first run.
This doesn't work for signs though, since it causes an ugly flicker in
the common case.
Optimisation: avoid placing duplicate signs.
Merge branch 'master' into gcc_refactor