Using WebSocketClient::begin I got into problems where `status = responseStatusCode();` would be trying to read the HTTP header, but because both HttpClient and WebSocketClient have a read function, the read from WebSocketClient was used, which returns a bunch of gibberish. This caused the WebSocket to think that the connection was not successfully upgraded.
* Fix -Wlogical-not-parentheses warning
The warning occurs because `operator!()` has higher precedence than `operator>()`.
Alternatively, we can use:
```
iClient->connect(iServerAddress, iServerPort) <= 0
```
Return invalidated String if memory allocation fails or content length
does not match body data length. Also, use timed reads to support
responses without a content length.