typeclass for event bindable types, make add/removeEventListener generic, and unsafe