Use IO as functor instead of monad when linking exceptions
Explicitly kill all connection threads when a node is killed

This should take care of exiting cleanly in the face of async
exceptions like user interrupt.

Also add a function to make it easier the launch of multiple nodes. The
demo is now using it.