events: once(): call listener *before* removing it

Order of event emitting and listener removal swapped.

Firing the event after it has been removed could cause problems
with code that subscribes to `newListener` and `removeListener`,
since any actions that occur in listeners to `removeListener`
which expect the listener added in `once()` to actually have been
removed could fail.

The try{} block is there to maintain compatibility with the
previous code, which guaranteed the removal of the event listener,
regardless of whether the code in the listener threw an error or
not. If you take the opinion that it's OK for the listener not to
be removed should somebody's listener die, then we can remove the
try{} block.
Merge branch 'master' of github.com:cgiffard/node