Several allocation reductions in SocketsHttpHandler (#34724)
* Remove state machine allocation for SendWithNtConnectionAuthAsync
Just manually inline the tiny helper that's only used from one call site.
* Remove unnecessary HeaderStoreItemInfo allocations
For the common case of a raw string, let the dictionary store the raw string directly rather than always wrapping it in a HeaderStoreItemInfo.
* Cache Date and Server response header values
For Server, we expect it to be the same for every request on the same connection.
For Date, if we're making lots of requests in a high-throughput fashion, we expect many responses on the same connection to have the same value.
In both cases, we compare the received value against the last one received, and if it's the same, reuse the same string.