Inital 2.x Connection Pool: Connection, Socket Wrappers

Work here is on-going, the complete pool implementation is still incoming. I'll be dumping pull requests for this work in batches and probably multiple PRs, but I'll go ahead and get this up now.

This PR contains commits that lay the ground-work and basic plumbing needed for the new connection pool.

- socket wrappers for unix, tcp and ssl socket types
- connection model

The socket wrappers encapsulate all the logic for ssl and handling various IPv4/IPv6 scenarios. The connection model provides an abstraction on top of the socket classes to help keep the logic in the pool itself a bit more simple and easy to manage.

The pool, pool manager and other items will be included in separate pull requests after these lower level dependencies have made their way in master.

Would love to get @behackett to give this a quick look over since it's largely based on the Python driver's implementation.