Refactor/change event system
This was a change talked about during the backend architecture rework. But we decided to implement it later so that the backend would be merged as fast as possible. (That's why this MR doesn't have an accompanying jira ticket)
We changed the implementation of the observer-publisher pattern to an eventhandler system similar to how it works in C#. You create an instance of the generic eventhandler class as a property. You can add a listener function to be called when it is triggered. When triggering it, you need to give an argument with.
Edited by Rens Versnel