domain: remove domain code from src/

Much of domain functionality can be achieved by async listeners, so they
have been refactored to use them.

There are two cases (one in net.js and other in _http_client.js) where
the handle isn't created until after the instantiation of the event. So
it was necessary to add a check if domains exist, then attach the
domain's listener to the handle at time of creation.

Because the async listener handles errors at the point of asynchronous
entry, the need to enter/exit a domain in the event emitter was no
longer needed.
async-wrap: pass callback return value to after

New after callback parameters are as follows:

function after(context, domain, returnValue);