Improve WebSocket subprotocol error handling

The WebSocket client would reject server responses that specified a
subprotocol that wasn't on the client's subprotocol list. This is fine,
except for the case when the client's subprotocol list is empty.

In that case, the client should accept any server selected subprotocol,
provided that the header does not appear more than once.