node: don't require listener to be passed

This way the before/after/errror callbacks can still be attached to the
context w/o needing to run a listener and pass a domain.
WIP: remove domains from core

Yeah... This is going to take a while.