Fix some issues with one() and trigger()

* Removing an event in the middle of trigger's loop caused problems -- this changes how events are unbound.  Instead of being spliced out of the array on unbind, the entry is deleted.  When deleted entries are encountered by trigger, they are spliced out at that point.  If event triggers are "nested" there could still be issues with removing events.
* Fixes one() so that event data gets passed on correctly
* Adds tests for both these issues