Bug-fix, Python3 support, and raise an exception when _get_server() fails.

I added a bug-fix for a crash that occurs when _get_socket() experiences a *socket.error*. I also added Python3 support, and I took the opportunity to just throw a NoServerAvailable exception (which I added) when no server connection could be elected. You may or may not want this, but it'll behave more like people might expect it to under failure, and we'll also be able to remove some boilerplate code from every operation that checks for a (None, None) return.