node: add async listener error handling

The first thing when _fatalException is run is to then run
process._errorHandler. This will run though and first check if there are
any error callbacks waiting in the async listener queue to be run.
WIP: take a step
WIP: each run listner creates unique object

Instead of trying to keep everything in a list of arrays, each one is
now it's own unique object that is used to store all relavent
information about the request, and is also used as a unique id to remove
the listener from the queue.
timers: run listeners when HandleWrap is absent

Just running the asyncQueue whenever would cause double entries to
occur, so instead we place running the async queue around when a
HandleWrap is going to be instantiated.
test: fix async listeners test

It is impossible to trigger a set of tests by running a callback within
one of the tests, around which you've run an async listener. This is
because the callstack will follow the callback to the next set of tests.
test: fix async listener error tests