Support for events and callbacks

This will allow us to do some nice refactoring of notifications and history and add features such as progress reporting in a generic way. With this there is an easy way to extend existing specialized base classes such as JobTask without inheriting and changing all dependencies.