Idiomatic Go implementation

I've taken the liberty to create an idiomatic Go implementation of this WebSocket wrapper, primarily for my own uses. As such, I felt it was appropriate to share the implementation.

WebSocket now implements `io.Writer` and most calls are blocking. I began to implement the `io.Reader` interface, but decided that the refactor needed for buffering would be more appropriate for a separate implementation.
First off, the comments refer to older const names, before they were renamed. However, I think the entire thing can be simplified by using the named type instead of `uint16`:

```Go
ReadyState ReadyState `js:"readyState"`
```

That way it's self-documenting and autocompletion will assist with setting/getting `ReadyState` values. Just need to ensure GopherJS supports `js` struct field tags with named types (the underlying type is still `uint16`).