Replaced EventListener with signals based on libsigc++

This replaces the rather hard to understand event dispatcher with a probably even harder to understand templated library, but fortunately we can rely on the available documentation.

Hopefully it will also help with the readability of our code and with adding additional signals to other classes.