node: separate throw flag between JS and C++

Where before a flag was shared between C++ and JS to check if the
callback threw, instead now we can simply set the value from the
TryCatch in C++ and save a confusing state share.
process: cleanup after method use

There's no need to run process._setupDomainUse twice. Remove it after
it's done running.
test: add asyncListener tests

These tests should cover all basic uses of the asyncListener API.
node: add asyncListener skeleton

The basic API entries are in place. Next is to put all the proper
entries in env.h, then actually get the hooks in the proper locations.
env: add entries for AsyncListenerCount

Add needed class entries in Environment so we have access to the needed
fields to call the async listener callback wrapper from C++.
process: call asyncListener from ReqWrap

If there's an active async listener, then call it from ReqWrap.
process: don't process async listeners if exiting
test: print expected and actual values

If the test fails it's good to know what the values were.
process: rename to _runAsyncQueue

The name is much less ambiguous.
node: add asyncListener support to nextTick
events: add asyncListener support

When an event is added it'll now run through the async listeners.
timers: add asyncListener support
node: pass nextTick object to asyncListener
req_wrap: pass object as function parameter

Want consistency on how to retrieve the context, and passing object as
an argument is much cheaper than calling the functions from JS with
.call().
node: attach _asyncListeners to the object context

This will be necessary if we want to be able to run the async listeners
on any asynchronous callback called within a previous callback.
domain: remove domain enter/exit call sites

These will be replaced with the async listener mechanism, and are being
removed now to simplify the process of switching over.
node: don't process queue if there isn't any

No need to attach the asyncQueue array to the object if there are no
listeners to begin with.