Overhaul websocketconn.Conn; implement net.Conn

In the turbotunnel branch I found it convenient to have websocketconn.Conn implement net.Conn, not only io.ReadWriteCloser. While implementing the additional methods, I found some ways that websocketconn.Conn's existing methods do not satisfy the requirements of net.Conn:

This branch

  1. adds tests that expose the above issues
  2. rewrites websocketconn.Conn to serialize Reads and Writes using my favorite io.Pipe-with-goroutine trick
  3. transforms websocket.CloseError with code CloseNormalClosure or CloseNoStatusReceived to io.EOF
  4. implements the remaining net.Conn methods