Rename bindings to events
Make attributes private

So that they will be set via set() in order to enforce that necessary callbacks are always triggered.
Enable CommonJS compatibility
Don't expose the trigger() method.

Looks like bad design after all...
Add tests