Add unique and onetime binds

* . bindUnique() prevents the same event from being bound more than once
* .one() removes the event once it is triggered
Both "global" and entity specific versions exist.  Also adds qunit tests for binding/triggering.
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
Merge pull request #500 from starwed/comp-enhance

Add unique and onetime binds; change how unbind is implemented

This might break code that both unbinds and triggers an event in a callback invoked by that same event.