TLS Support

Connection instantiation is now synchronous, which necessitated lots of test changes. Many tests became integration tests. Others used better mocking. The big theme on that front is that the `FakeServerTest` is now gone because it was too difficult to maintain.
That seems reasonable. I had done it this way mimicking the `pynsq` [bindings](https://github.com/bitly/pynsq/blob/fe1622e0f23a1dfe167db618c7120559d03ce1e7/nsq/client.py#L24)