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 allow any node to connect via Tor (using --tor-mode or -t) although only other Tor-mode nodes will be visible. Functionality is the same as non-Tor mode. To receive connections you will need to configure a Hidden Service in Tor and point the hidden service port at your local OpenBazaar server port (usually 12345).

This PR is currently running a Native Tor seed node operating at tcp://fksu5carj3okqfan.onion:12345 suitable for test purposes if you wish. 

You may access the web interface of a demo client here: http://fksu5carj3okqfan.onion

Summary of changes:
1) Tor mode added to the launcher
2) socksiPy-branch has been added to requirements.txt
3) A utility library file called tor_util.py has been created that currently contains a redirector class - TorRedirector 
4) PeerConnection._initiate_connection in connection.py has been modified to call TorRedirector when a zmq peerconnection via Tor is required
5) An '.onion' hostname may be specified for your nodes local IP using '-i'
6) In tor-mode all zmq peerlistener sockets and peerconnection sockets bind to localhost only

Outstanding Changes
1) Ensure that other connections such as those to blockchain and Obelisk go via Tor 

A background medium-long term goal should be to fully implement SOCKS5 with name resolution into zmq itself at which point the redirector element would become redundant.
if PeerConnection has a reference to an object that has the OpenBazaarContext then that'd be the easiest way, asking internally. If PeerConnection has no reference to such an object, then you should pass the OpenBazaarContext object in the constructor, whatever else needs to be passed down to PeerConnection from the startup arguments will be there and we don't need to pollude the method interfaces any further.

We just need to make sure that OpenBazaarContext does not become one of those god objects and that it just serves the purpose of keeping information about the openbazaar runtime arguments, or other acceptable data (like the port it's running on as this may be calculated after the STUN check, things of that nature).