feat(*) Events. (ready)

**The diff might be large but only b/c I moved some files around in the 1st commit. It's probably easier to look at the individual commit diffs.**

- Moved mixins namespace to root since not always component specific and to keep components folder free of anything but actual components.
- Added a small dispatch mixin just for convenience so we dont have to duplicate 'update', 'render' etc in each component.
- Added the dispatcher to all components and dispatch the appropriate events.