[Http]: Cleanup chained async operations; bug #19161.

Conflicts:
	mcs/class/System/System.Net/WebConnectionStream.cs
[Http]: Cleanup and simplify the ServicePoint's connection group list.
Small fix.
[Http]: Fix the loop in WebConnection.ReadHeaders().

We need to reset `gotStatus' each time we enter the outer loop or we
would attempt to interpret the status line as a header.
[Http]: Read version from "HTTP CONNECT" response.

When using "HTTP CONNECT" to create a tunnel to a proxy server,
check the proxy server's response for the HTTP Version and close
the connection if it's HTTP/1.0.
[Http]: Only recycle ServicePoints from the idle timer (fixes #19823).

Thanks a lot for Martin Potter to find and report the race condition
which was causing the problem.

ServicePointManager.RecycleServicePoints() was a left-over from the
old times when we didn't have an idle-timer based approach.