Add support for sending binary messages.

When enabled, frames are sent as text or binary depending on whether
they are of type unicode or str. Additionally, Unicode characters in
text frames are properly encoded.

This must be specifically requested .setBinaryMode(True); this is to
preserve backwards compatibility with the previous behavior that a
str object would be sent as a text frame.