Use an object to hold zone bound event handlers

The bound event handler function gets replaced if the same event handler
function is used to handle multiple event types. This can be common
because it happens when binding events using jquery `$(el).on()`

What happens is that when an event handler gets replaced like this, it
can't be removed using `obj.removeEventListener`.