[Ready for review/merge] Search time

search.js:
- Updated debugging output for readability.
- Search results were trying to key compare on unset values.

search.html
- UI now shows tags for search results and links to searches for those tags.

connection.py
- Removing `host_to_ip` code due to unexpected connectivity issues and minimal benefit.
- Fixed null `callback` passed to `lambda`.
- Upped timeout to 5 seconds for slow peers.

dht.py
- `add_known_node` takes a URI not an ip and port separately so fixed that.
- Removed some unnecessary debugging output to clarify logs.
- Fix adding known node if not in the `knownNodes`.
- Removed Timeout of peers unknowing. This seems to be causing a threading issue where someone might try to reach that peer as you’re unknowing it. There probably needs to be a better way to do this.
- Kademlia requires you to send back close nodes even if you have routing to the exact node and we were shorting that by just returning the exact node. This creates an issue stopping us from having redundancy of storage.
- Mostly debugging cleanup beyond this.

market.py
- Debugging info added.
- Threading now for DHT storage of contracts, updates to listing indices and keyword indices.

transport.py
- Fixed the ip/port and URI issue mentioned above.

ws.py
- Added a client refund order method for setting up refunds (somewhat unrelated to the rest of the PR but give me a break).
Re-reporting comment from previews review. The above code looks like:
```
lambda msg, y=handshake_cb: cb(msg, handshake_cb)
```
This probably does what you mean, but it is bad style, since the purpose of `y` (aka `handshake_callback`) is not evident. Please rewrite as:
```
lambda msg, handshake_callback=handshake_cb: cb(msg, handshake_callback)
```

I suggest dropping the `lambda` entirely and using `cb`, as is done in the current code.