[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)

No it's not hugely efficient memory wise but it is simple. If you have a runaway situation with excessive peerconnections then the 1mb buffers won't help the situation but the problem is a bigger one than anything in this PR.

I will revisit the non-blocking version and also look again at the buffers. Originally 100Kb buffers were used. I can reduce buffer size back down and also reduce socket timeout size to keep the throughput up.