EventEmitter tweaks

* Prevent accidental object's function calling when emitting events.
* Add #one for callbacks that should be fired only once.
* Don't use $.extend( obj.prototype, EventEmitter.prorotype ), can be
  bug prone (name clashes).

Change-Id: I11de9760fa7e6fe5a0ef57204321689e6fcc6a0b
Story 692: Support for closing overlays with back button

This also adds M.router.route() that can be used for client-side hash-based
routing (see doc comments and editor.js).

Change-Id: I71ac95c3ff13e3ad5b30524217115983bc34f099
Merge changes I71ac95c3,I11de9760

* changes:
  Story 692: Support for closing overlays with back button
  EventEmitter tweaks