[fix] Tweak removeListener to correctly handle the once argument

This fixes a bug where events could be incorrectly removed when using the once flag.
For example the following snippet
```js
var e = new EventEmitter();

function foo() {}
e.on('foo', foo);
e.once('foo', foo);

e.removeListener('foo', function () {}, true);
```
removes the one-time event even if the `listener` is not the same.