fixing larger bug in event propagation. so when an event triggers, it basically does:
fixing larger bug in event propagation. so when an event triggers, it
basically does:

  this._events[type].each(...run event...);

looks fine. if, during the running of that event, the event removes
itself from the object's events (standard practice for self-cleaning
events) this._events[type] changes mid-process, which stops the next
event in the chain from processing.

so instead, we do:

  Array.clone(this._events[type]).each(...run event...);

even if events are removed from the main array during processing, the
processing array is safe from changes and can continue to process its
items.

this makes it so if you remove an event from obj._events via unbind()
while the events are processing, the event removed WILL FIRE in that
round, which i believe is a much better tradeoff, as events shouldnt be
seen as sequentially processing functions but as "could run in any
order."

lyonbros/composer.js,lyonbros/composer.js,lyonbros/composer.js