Listener refactor

### Motivation:
It turns out everyone uses `TransportLayer` as a dump for every method or attribute whose proper place is undetermined. As a result, this class is bloated with all sorts of code: managing sockets, listening for requests and handling various pieces of crypto code.

This is the first of a series of attempts to reduce the bloat of `TransportLayer` and factor the code into several smaller and simpler classes, more amenable to testing and maintenance.

The new `Listener` classes mirror the pattern of `PeerSender` and `CryptoPeerSender` but are designed cleanly and follow good practices such as defining all members in constructors. They are also completely independent from `dht.py` and `transport.py`, whereas `Sender` classes still have this problem and should be refactored in the future.

### Changelog:
* Factor classes `PeerListener` and `CryptoPeerListener` out of `TransportLayer` and `CryptoTransportLayer`, respectively.
* As the `Sender` classes get a `dict` that is then encrypted, compressed and sent, the listener classes do the inverse actions and receive, decompress and decrypt the messages, relaying the sent `dict`s to the receiver.
Since we are inside a new-style class, this can be written as a [setter decorator](https://docs.python.org/2/library/functions.html#property) and be as safe.

1. First, tag `ok_msg` as private variable, [here](https://github.com/OpenBazaar/OpenBazaar/pull/678/files#diff-9036db47255df3b3efe7114b5ede3611R275):

   ```
   self._ok_msg = None
   ```

1. Then, replace `set_ok_msg` with: 
   ```
   @property
   def ok_msg(self):
       return self._ok_msg

   @ok_msg.setter
   def ok_msg(self, value):
       self._ok_msg = value
   ```

1. Finally, replace all `obj.set_ok_msg(val)` calls with `obj.ok_msg = val`. And you 're done!