This refactors the library to be based around a connection.

This change is not backwards-compatible.  It will require a major version number bump.

This change removes many global variables and options (for now).  Any that are required should be made into per-connection or per-request options.

This change does not fundamentally alter anything it doesn't have to, however, it would probably be an opportune time to alter the connect conventions to use `Dial` instead.