Support arbitrary headers.

This is an incompatible change. Updating to this change should be easy
for most applications (usually changing "" to nil in call to Upgrade).

- Replace subprotocol argument to Upgrade with response headers. The
  application can specify the subprotocol in using the
  Sec-WebSocket-Protocol header.

- Replace suprotocol result from NewClient with *http.Response. The
  application can get the negotiated subprotocol using
  resp.Header.Get("Sec-WebSocket-Protocol"). Applications can also get
  Set-Cookie headers using the response Cookies method.