Implement basic event system

Implement a basic version of the event system to allow event listening and calling.