Some cleanup in anticipation of IPV6.

* Added message_parsers.py to separate parsing from protocol
  logic.
* Implemented addr parsing.
* Refactored receiveDataThread.recaddr.
* Added packNetworkAddress and unpackNetworkAddress in
  shared.py to put IPV6 address handling in one place.
* Have [,un]packNetworkAddress use inet_pton and inet_ntop.
* Convert some print statements to logger messages.