Added the ability to pass in an IO loop instance. This allows the class to be easily unit tested.
Added the ability to pass along additional HTTP headers - for example to pass along cookies or authentication headers.
If the remote end doesn't support websockets (or there is a proxy of some kind between you and them), call the on_unsupported() callback to indicate that.