use eventEmitter + mixins for auth

Use a global (yuck!) `emitter` object that can now fire `login` events.
An `AuthMixin` mixin provides authentication-related functionalities,
which include adding a listener that calls `setState` on a component to
re-render its view when a `login` event is fired.

It's ugly, I know. For now that's all I've come up with...