Improve charset support

This includes improved support for charsets. The first commit sets the charset to UTF-8 when take a Unicode python string and convert it to UTF-8 for sending. (Binary python strings continue to get sent out as UNKNOWN.) The second adds a read-only `charset` attribute to incoming messages.