Connect with fd / Free and keep fd

These commits extends the connection API with a function to set up a context using an existing file-descriptor, and a way to free a context while returning the fd instead of closing it.

The API was originally extended to make it possible for us to interface with our own connection pool implementation, and we've been using this in production (though on 0.9.x) for a good while now without any problems.

Because we think these changes are generally useful, have seen extensive use internally, and because it would lessen our maintainence burden, we would like to see these changes adopted upstream.