Rewrite event methods, provide `.one()` with delegation & `data` arg

For jQuery compatibility, `.one()` should also support CSS selector for
event delegation and the `data` argument, but this wasn't easy to add in
the previous implementation.

This rewrites all public event methods so that the core functionality is
encapsulated in `.on/off()` methods, and other (mostly legacy) methods
now invoke them instead of the other way around. This will make it
easier to remove the deprecated methods in the future.

References #376
Encapsulate string & function type checks in event.js

Helps minification