Requiring event listeners to be functions for binding

Fixes #354.

This ensures that passed in `listener`s are functions so that they can be called correctly.

Throws if not. (matches the pattern Ember, Backbone and (I believe) Angular set forth).

Working on the CLA process via e-mail with Pete Hunt (pete@instagram.com) as mentioned in the #reactjs chat.