Massive code updates

* Improved event handler performance (I think)
* Cleaned up internal event code to use vanilla JS instead
* Put everything into 1 file since it was silly to have 2