Fix crash and close extra idle connections when we're above the limit.
Fix the deadlock.

We cannot call WebConnection.Close() from the timer thread while
holding the ServicePoint.SyncRoot lock because that method could
block on the WebConnection lock.
Merge branch 'baulig-http-fixes-7.0.4' of github.com:mono/mono into baulig-http-fixes-7.0.4

Conflicts:
	mcs/class/System/System.Net/ServicePoint.cs
	mcs/class/System/System.Net/WebConnectionGroup.cs
Remove the dead-lock - Take Two.

Simplify and rewrite, let WebConnectionGroup.TryRecycle() take the lock.
Small fix.
Only print the debug spew when called from the timer thread.
[NTLM]: Add new 'NtmlSettings' class to hold the 'DefaultAuthLevel' property.

When the NTLM sources are compiled into System.dll, then we need to store the
configuration variables there and peek/poke it in Mono.Security.
Remove the unused 'using System.Threading.Tasks' to fix the build.
Code cleanups.

* Get rid of ServicePoint.SyncRoot; lock 'this' instead.

* Avoid copying collections in WebConnectionGroup.TryRecycle().

* Optimize ServicePoint's "groups" dictionary: in the vast majority of
  cases, we only have one single web connection group per service point,
  so we don't need that dictionary.

* Remove some locks where they're not needed.

* Misc minor cleanups.
Remove all the debugging spew.
More tiny cleanups as suggested by kumpera.