Fix some issues with one() and trigger()

* Removing an event in the middle of trigger's loop caused problems -- this reverses the order of array iteration to avoid that.
* To preserve the order handlers are invoked, add them to the beginning of the array instead of the end
* Also, fixes one() so that event data gets passed on correctly
* Adds tests for both these issues