Add check_port to network_util.

* Prefer ipv6 over ipv4 sockets.
* Accept variable timeout.
Refactor code in connection.py

* Drop unused PeerConnection.responses_received.
* Refactor PeerConnection.create_zmq_socket.
  * Allow it to raise an exception; we are catching it elsewhere.
  * Make it a private function.
* Refactor PeerConnection.send_raw.
  * Make failure cases stand out.
  * Do not compress until ready to send.
* Make failure cases stand out in CryptoPeerConnection.start_handshake.
* CryptoPeerConnection.check_port is now only a wrapper.
* Shorten CryptoPeerConnection.sign.
* Straighten CryptoPeerConnection.encrypt.
* Refactor CryptoPeerConnection.send.
  * Make failure cases stand out.
  * Guard against encrypt returning False.
* Remove PeerListener.cleanup_context. PeerListener no longer manages
  it own zmq.Context. Purge any references.
* Straighten PeerListener.listen.
* Remove unused import.
Use network_util utilities in DHT.
Use tornado builtin to check for valid IPs.
Properly close socket.

* Since exceptions are used to trace errors, be constistent and call
  socket.connect.
Other style fixes.

* Abstract protocol in get_peer_url.
* Replace special-purpose code with check_port.