Remove Task{CompletionSource} allocations from Http2Stream (dotnet/corefx#35522)
* Remove Task{CompletionSource} allocations from Http2Stream
This change makes the Http2Stream instance itself awaitable via ValueTask, such that we don't need to allocate any additional TaskCompletionSource or Task objects for such internal await'ing, regardless of how many times the Http2Connection or Http2ReadStream needs to wait for headers or response data to arrive.
* Address PR feedback
Commit migrated from https://github.com/dotnet/corefx/commit/
aacff5212204ee54e3b3e0172fcf364c3fe253e3