Improve KafkaConnection with more tests

Handle connection failures in KafkaConnection.reinit
Set _sock=None in close()
Also check for no _sock when checking for _dirty
Add a few more debugging log messages
Implement the skipped connection tests in test/test_conn.py
It would be nice if we didn't have to check both `_dirty` and `_sock` (especially since we do this exact check twice). One option would be to try to set `_dirty = True` anytime `_sock` is set to `None`, but that is error prone. Maybe instead there could be a function or property used in place of reading `_dirty` that would `return self._dirty or not self._sock`?