Implement the `on` method
Implement the `on` method

* Registers a callback for a given event.
* Throw a TypeError if the 2nd argument isn't a function.
* Avoids registering duplicate callbacks.
* Returns the `Emitter` to allow chaining.

N.B. Couldn't get chai's `.throw()` method to work to test that
functionality.

necolas/emitter.js