Make sure events don't fire after listener is removed.

This fix replaces the action of the event listener structure with a noop
function. This gets rid of a dangling event listener that should not
have been triggered. Could set the action to null and check for null in
the event dispatch loop, but requires extra code in the loop.

The dangling listener occurs when removing a listener by another
listener for the same or different event.