Update event handlers, deprecate attach()/detach() for on()/off(), add trigger()