Fix chat message formatting and word wrapping

By switching from a QLabel to a QTextBrowser widget more formatting
options and word wrapping that breaks words is possible.  It comes with
an issue I have been unable to resolve

 * Selecting text and going down with the cursor will cause it to
   scroll.  It's possible to increase padding to remove this behavior,
   but it doesn't look great.
Add chat window dragging

This was originally implemented by Mohammed Nafees, shared on Basecamp.

I've noticed an issue with dragging across screens (monitors) where the
chat window will jump vertically.  I've tried debugging it, and
ultimately it looks like an issue with the `move` method.  The
coordinates are valid (I tried using global coordinates as well), and
the amount to move is correct, but when moving to coordinates on a
different screen it doesn't do the right thing.