Router now has specific route events.

Also cleaned up the route event. No longer passes the context which is
set assigned to `this` anyway.
Removed some stray console.log statements.

I forgot about them because I'm being harassed by a fly as I- LEAVE ME
ALONE, STOP FLYING AROUND MY SCREEN
Reworked the controller. Now event based.
Cleaned up the emitted events across the code.

Now the `this` argument is not passed to anything. This is because the
default context of the listener is set to this anyway. It's pointless
passing it again.
Bumped the package version number.