async-wrap: can remove listener on handle

Also fixed a bug where each listening object needs to have a uid since
the objects themselves are unique.
domain: WIP use asyncListeners

At least test-domain.js is passing. :)