More natural streaming support for UDP

When you fork a loop from a UDP dispatching loop, that loop has its own
socket that it can use to continue communicating with the client. So you
don't have to write a separate UDPClient class that the server uses to
talk back to the client. You just diesel.send/diesel.receive as usual.