Implement my low-level WebSocket protocol.

Communication over the low-level WebSocket protocol is now possible.
Add in generate_cookie request to system, and fix up the test.

Add in the generate_cookie request to the system, since it is required
by the protocol.  Also move the test logic to one common method to avoid
copy and paste mistakes.
Simplify the test runners by moving injection to an appropriate place.

Instead of having the test runners get parameters injected, only to pass
them all along to a helper method, inject the parameters directly into the
method, simplifying everything.