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

So there is one TorRedirector per Peerconnection. A redirector can be expected to carry all outbound traffic to a single node. If we have 20 active peerconnections then there will be 20 active redirectors.

So max throughput is limited at 5 Megabytes/second which would hopefully be more than enough for a connection to a single node over Tor. We can up that value to any reasonable limit.

You will notice that socket timeouts are set at 0.1 for blocking operations, basically the socket will wait for up to 0.1 seconds for that 1 MB of traffic. If after 0.1 seconds there is less that 1MB received, you will just get back what is waiting.

The version we decided to push of TorRedirector is quite small and doesn't spin up multiple threads, just one thread per Peerconnection.

For background, three variants of TorRedirector have been built:
1) New thread for every socket pair is created, no limit on connections (overkill for this but it may come in useful for the relay functionality #536). 
2) TorRedirector as it stands in this PR
3) A non-blocking version using Select to switch between sockets.