Refactor Listener

Offer a stronger contract for listeners, where the listener's block is only
called once after being closed.
Close listeners when child is killed
Bump patch