Hook up the web socket reader and writer together.

Add a simple real-world recipe which talks to an echo server.
This would result in a behavior change based on whether or not the code is present. That said, we can always initialize the `reason` to the empty string, but I think I prefer the contract being `null` or a valid string.