Allow listeners to stop an event's propagation

While working on #126, I realized that it's currently not possible for listeners to stop the propagation of events, so I added it.

In my implementation, a listener can stop propagation by returning `false` (compared with `===`). Tests and doc updates are included in the PR.

Let me know if you have any thoughts about this either way.

Cheers,
Mike