Fix SocketsHttpHandler streams to do sync I/O in sync methods (dotnet/corefx#36946)
* Fix SocketsHttpHandler response streams to do sync I/O in sync methods
SocketsHttpHandler hands back response Streams for reading response body content. While we encourage developers to use the async Stream APIs, Stream does expose synchronous APIs, yet the current implementations are just wrapping the async ones and doing sync-over-async.
This fixes the response stream synchronous APIs to be sync down to the underlying networking stream.
It also fixes a couple other minor issues, e.g. Flush{Async} on read-only stream should be nops rather than throwing, we should include an error message about a stream being read-only when trying to write to it, etc.
* Address PR feedback
Commit migrated from https://github.com/dotnet/corefx/commit/
315fd00cb2465390900209919cdb2bf6bc44ae0e