Clean up PeerConnection

* Untangle PeerConnection from transport.py
* Let create_zmq_socket throw exceptions and handle them in send
* Do not guard zmqstream calls from exceptions as these happen on
  programming errors
* Guard json.loads from exceptions that may be thrown while processing a
  message that came from the network
Remove _peer_alive
Rename create_zmq_socket to _create_zmq_socket

Conflicts:
	node/connection.py
Clean up start_handshake

* Make start_handshake more readable
* Guard json.loads from exceptions that may be thrown while processing a
  message that came from the network
Remove sin and generate_sin from CryptoPeerConnection that were not used
Remove unused import
Use lazy logging.
Simplify updating peer nickname
Don't decide if the recipient uses ipv6 based on exception thrown
Cleanup send

* Properly check if guid and public key are set and abort sending if they are
  not set
* Remove excessive try statements. Only protect encrypt from exceptions.
Use the global zmq context in PeerListener

* There is no need to pass the zmq context explicitly
Do not accept not signed messages

* Open Bazaar always sends singed and encrypted messages so it doesn't
  make sense to also accept only encrypted messages
PeerListener should accept compressed messages

* PeerConnection and CryptoPeerConnection always send compressed data so
  in order to test PeerListener with PeerConnection, we have to make
  PeerListener also accept compressed messages
Fix PeerListener.stop not to close the global context

* Close the stream and socket when stop is closed to stop listening
* Remove is_listening and instead check if socket has a value
Reduce code duplication in the listener classes

* Decompress and read the json message in handle_recv and not in _on_raw_message
Cleanup _on_raw_message

* Reduce nested indentation
* Make it obvious how non encrypted messages are handled
* Use a single try statement while decrypting