Convert blocking operations in HttpWebRequest and SslClientStream to non-blocking operations. This fixes #15451.

More details:
  * HttpWebRequest now writes the HTTP request headers asynchronously. This will avoid blocking a thread pool thread until the headers are written.
  * SslClientStream was doing the TLS negotiations in a blocking manner. Converted the negotiation method to an async state machine where all operations are done asynchronously.
  * The test case identified in #15451 now completes quickly with less than 15 threads created, vs. 100s of threads used before this fix.

Future work if needed:
  * I did not convert SslServerStream but the same pattern could be used here.
  * SendAlert is still blocking. I thought it was not worth converting it to non-blocking.
Fix 'make dist' broken since 35287878

In commit 35287878b9785efeaeb854afb6ee4509f5714d65:

    [xbuild] Reorganize xbuild targets/frameworks/bin data

Several files were shuffled around, but the EXTRA_DISTFILES was
not fully updated with the new file paths.

This patch is required to build a 3.2.7 tarball.
Include xbuild_4_0_dirs in dist; fixes 425fdc03

In commit 425fdc03fa38b2ee29c1cf88617ddb1580fde78f:

  [xbuild] Build & install MSBuild 12.0 assemblies

The net_3_5_only_dirs containing the Build classes were moved to
various xbuild_X_dirs variables, but an undefined $(xbuild_dirs)
variable was appended to DIST_ONLY_SUBDIRS.

This patch adds $(xbuild_4_0_dirs) instead.
Update mono-core.spec.in with xbuild reorganization
Fixes a socket leak in class TcpListener

Fixes a socket leak in TcpListener.AcceptTcpClient and
TcpListener.EndAcceptTcpClient.
Properly compare assembly versions when performing binding. Fixes #17368.

The right way to compare assembly versions is by translating the major/minor
pair into a single number and compare that.

Since each element can only be one byte long, we multiply major by 256
before adding to minor.

This solves the problem where version 100.0.0.0 was not after 3.5.0.0.
[xbuild] Define VisualStudioVersion, since F# projects can depend on it
Revert "[jit] Precompute a bit more information for delegate trampolines to speed them up."

This reverts commit e3de4cb92e5f91fcd37d83f832401be45c0a77a5.

Revert this as it seems to break mt.
[llvm] Load rgctx/imt arguments using a volatile load on arm to prevent LLVM from moving the setting of the argument elsewhere. This is needed because these arguments are passed in a caller save register, but our code treats it as callee save in a lot of places. Fixes #17435.
[mcs] Better check for invalid attribute targets. Fixes #17447
[Microsoft.Build.Utilities] Fix the escaping/unescaping of ItemSpec

This should hopefully fix compilation of projects using files with
names like 'foo@2x.png' in various places like embedded resources
or content items which must be copied to the output directory.

With tests.
[Microsoft.Build.Utilities] Properly escape/unescape ItemSpec

With tests.
[xbuild] Remove unnecessary/inconsistent path conversion hack

Directory separators are automatically converted from Windows->Native
when parsing MSBuild files, but any paths provided in code must already
be native.
[xbuild] Rework escaping in TaskItem to be compatible with MSBuild

The escaping/unescaping behaviour of TaskItem:ITaskItem was undocumented
originally in MSBuild, so our implementation did not perform any. This
caused issues with Tasks getting metadata and paths that were escaped,
trying to use them as-is, and failing horribly.

Fortunately the ITaskItem2 interface in .NET 4 provides complementary
accessors with documentation that indicates that it stores values
escaped internally, and the old accessors unescape the values.

This commit implements ITaskItem2, fixes the escaping behavior of the
old accessors, and removes some superluous uses of IDictionary.Contains.
[sgen] Fix a regression caused by 07fc727b8698a100aeb214ae3f7eb1cc3f5bab20. Fixes the windows build.
[aot] Add a more helpfull error message when a method cannot be loaded.
[jit]Add a missing call to mini_native_type_replace_type in mini_get_basic_type_from_generic.
Merge pull request #882 from jgagnon/master

Fixes a socket leak in class TcpListener
[runtime] Change the way the runtime waits for threads to finish. Instead of detaching them at thread startup and waiting for them using WaitForMultipleObject(), add threads to a hash table before they exit mono code and use the finalizer thread to call pthread_join () on them. This will hopefully fix the problems where a thread tried to access data which the runtime at shutdown/appdomain unload.
Fix warnings.