Allow for other implementations such as SockJS

This merge adds/changes a few things:

- Added `websocket.NewWithGlobal` function to allow specifying the variable on the window.
- Added example usage to the readme.
- Changed `websocket.WebSocket` from a struct to an interface.