Support arbitrary network dialers

One such use case is to use the library within the constraints of Google
App Engine
https://developers.google.com/appengine/docs/go/sockets/reference
I think the function should be called DialOpen.