Bug 15574. XML deserialization recursion: add array type to known_types?

One way to prevent https://bugzilla.xamarin.com/show_bug.cgi?id=15574 is to add the problematic array type to the `known_types`.

On the other hand, this might not be the intended use of `known_types`. In that case, perhaps a better fix would be to guard against recursion in the `foreach` loop:

	if (t != type)
		RegisterTypeAsKnown (t);
Bug 15572. Lookup KnownTypeCollection element types in MSSimpleNamespace

This patch prevents the problem in https://bugzilla.xamarin.com/show_bug.cgi?id=15572. This change allows the DataContractSerializer to deserialize DataMembers that use an array KnownType, at least for the test case in the bug report.
SqlBulkCopy Implementation

This are the code changes to get the SqlBulkCopy procedure working on
mono.
Support for DispIdAttribute in GetIdsOfNames

License: This patch is under the MIT/X11 license.
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.
Fixes Xamarin Bug 16742:  XmlConvert.ToDateTime(string, XmlDateTimeSerializationMode) throws index out of bounds exception

Fix for bug + added tests for method
XmlConvert.ToDateTime(string, XmlDateTimeSerializationMode)
Additional tests for Xamarin Bug 16742 + style enhancements
Cleaned up the using statements in DateTime tests
[mcs] Explicit user conversion from nullable types does not have to lift the result. Fixes #17469
[mcs] Improve daa862f17f7930e5618d1e46e09de46f95c667d4 commit
[runtime] Move the thread exit code to mono-threads from io-layer.
[runtime] Remove some references to gc_wrapper.h which are no longer needed.
[corlib] Decimal parsing with banker's rounding with non-zero digits beyond the thousandths digit. Fixes #17536
More tests
[corlib] Fixes our of range index access from a5fc91fc42a9a1edcc5ad9d6c656c9c9223e62a8
[runtime] Remove code duplication from the wapi_interrupt_.. functions.
[runtime] Move thread attaching to mono-threads from the io-layer.
[runtime] Implement GetCurrentThreadId () using mono-threads.
[runtime] Rename the MONO_GSHARING define to ENABLE_GSHAREDVT for consistency.
[runtime] Rename mono_thread_info_dettach () to mono_thread_info_detach ().