Factor a BitMessageChat class out of CryptoTransportLayer

This is part of a series of PRs that attempt to clean up the code in `transport.py`
Right now the code for the integration with BitMessage is scattered in `transport.py` and `market.py`. To solve this a new class called `BitMessageChat` is created in `chat.py` and the relevant code was moved there to form an object that makes sense. 
so, if you're not going to use `self.bitmessage` as a `BitMessageSupport` object, you could also have done:

```
bitmessageSupportObjectThatWillDieWhenTheStackIsReturned = BitMessageSupport(ob_ctx, db, self.guid)
self.settings['bitmessage_address'] = self.bitmessage.bm_address
self.bitmessage_address = self.bitmessage.bm_address
```

which then leads me to say:
"Why do we need the same reference on both `self.settings` and a property?"

This type of repetition leads to more maintenance, you may change one elsewhere and forget to change the other, thus opening the door to mutability bugs.

#DRY