support rerouting sockets

This is a fix for issue #59. It adds the ability to make a route available for all existing sockets when it is routed. It passes the existing test suite and I've added a couple more tests. Please let me know if there's anything that needs to be changed.