EventEmitter: Fix emit/once edge case

This PR fixes a bug in `EventEmitter` where a Listener added via `once` is not removed correctly.

This example results in an infinite loop.
```
obj.once('play', function() {
  obj.play();
})
```