domain: use AsyncListener API

The domain module has been switched over to use the domain module API as
much as currently possible. There are still some hooks in the
EventEmitter, but hopefully we can remove those in the future.
test: add additional async listener tests
doc: add docs for AsyncListeners

Documentation has been added on how to use the AsyncListener API.