Made event system generic. *BREAKING CHANGE*
Rewrote React system based on the Observable pattern. *BREAKING CHANGE*