Refactor of the whole plugin to remove event handlers properly

Hi @huei90 

I refactored and restructured the plugin to allow adding/removing of event handlers and making the plugin a little bit easier to maintain. 

Had to change the structure of the plugin quite a bit.. I will still have to do some memory profiling and testing before this should be used in production.

Greetings,
tikiatua