Ensure `.trigger()` does not set `event.data`

Extra arguments to `.trigger()` are extra arguments to pass to event
handlers, but they're *not* to be saved as `event.data`.

This is for jQuery compatibility.

References #376
Add `data` argument support for `.bind()` and `.on()`

The value of this argument will be copied to `event.data` property before
executing each event handler.

Closes #376
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
Merge branch 'event-data'

Closes #863