httpcore: headers with comma-separated list values handled as single strings
### Nim Version

2.2.2

### Description

Some HTTP headers can have multiple values, e.g.:

```
Connection: keep-alive
Connection: Upgrade
```

httpcore seems to correctly combine subsequent header values into one `seq[string]`, so when `contains(values, "Upgrade")` is called, it will return true in this case.

However, it's also [legal for those values to be combined](https://www.rfc-editor.org/rfc/rfc9110.html#name-field-order) into a comma-separated string:

```
Connection: keep-alive, Upgrade
```

Firefox does this when opening a websocket, and in this case we get a `HttpRequestHeader` which is a single element sequence `@["keep-alive, Upgrade"]`, and `contains` returns false, so the websocket handshake stops there.

### Current Output

```text

```

### Expected Output

```text

```

### Known Workarounds

Mirco Ackermann discovered the problem in [this happyx issue](https://github.com/HapticX/happyx/issues/397#issuecomment-2727451867), where websockets weren't working at all, because Firefox sends the header `Connection: keep-alive, Upgrade` instead of two separate headers (actually Chrome just sends one: `Connection: Upgrade`.

So one workaround for happyx was to replace the call to httpcore's `contains` function with a new function that splits the header value by comma. But this should only be done for fields where it's legal for the header value to be a list or set. I'm not sure what the best solution is.

### Additional Information

_No response_