Event system update

Improved the event system, it's now safer in it's usage of method
pointers and events are now used for updating components instead of
going through the component factory