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. 
same here, it's confusing how this object changes itself into something else. This is the kind of stuff that makes me nervous about the freedoms python gives. You could be expecting one thing and you get another and you only find out during runtime.