Allow removal of listeners registered with 'once'.

I ran into a problem where I had to remove a listener for event `A` in a listener for event `B`, but in some cases the listener for `A` was registered with `once`. Because one-time listeners are wrapped in closures they are not being matched by `removeListener`.

There are probably myriad ways to solve this, in this PR I tried to minimise changes to `on` and `emit`, as well as preserve the current invocation order of the listeners.

What do you think?