Resolves #686

The functions that `listen` to messages now return an object with `stop` and `restart` methods. When called, these will stop and restart the listening.

The order in which Listeners are added is maintained (as before), so `done` will still work as expected.