[WIP] Native Tor support

This PR is intended to add Native Tor support to OpenBazaar.

Given that zmq does not support name resolution via SOCKS it has been necessary to create a small TCP redirector within PeerConnection that allows zmq sockets to be routed via SOCKS/Tor.

Currently this PR will route all zmq connections to nodes with '.onion' URIs via Tor successfully. Nodes cannot connect back yet because our URI is still set to a public address.

Summary of changes:
1) socksiPy-branch has been added to requirements.txt
2) A utility library file called tor_util.py has been created that currently contains a single class - TorRedirector
3) PeerConnection._initiate_connection in connection.py has been modified to call TorRedirector when a zmq peerconnection via Tor is required

Outstanding changes:
1) Within transport.py allow for my_uri to be set to the users Tor hidden service hostname when in 'tor mode' - e.g. the form tcp://abcdefg123456.onion:12345 (UPDATE: Done, now implemented in b6b89e5)
2) Allow for binding the server to localhost (currently openbazaar launcher prohibits this)  (UPDATE: Done, now implemented in b6b89e5)
3) Completion of --tor-mode parameter on the command line or another way of specifying a '.onion' hostname as your nodes IP. See #795  (UPDATE: Done, now implemented in b6b89e5)
4) Add ability to change the Tor SOCKS proxy from the default of 127.0.0.1:9050 to a user specified value
5) Ensure that other connections such as those to blockchain and Obelisk go via Tor ( may be #795)

maybe we should move this `tor_mode` parameter right after `self.ip, self.port, self.tgor_mode` on the `CryptoPeerListener` constructor, feels messy here after a callback parameter, might want to put all the network related parameters together.