Fix incompatibility with .NET's serialization of ObservableCollection - part of bug 11294
Reverse previous changes
[WebConfigurationManager] Fix memleak by using a LruCache (BXC#5598)

System.Web.ConfigurationManager had a cache which didn't have any max limit,
therefore when using Restful URIs in ASP.NET (like having some variable
parameter in the virtual path, i.e. /user/{userId}/tracks, where {userId}
is a variable Integer) this was very likely to cause a leak which would
end up causing troubles, like an InvalidCastException thrown by
HttpApplication::PreStart()

Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=5598
[System.Web] Coding style nits in LruCache
[man] Update mono version 2.11->3.0
[WebConfigurationManager] Make the max LRUcache size configurable

Using the env var MONO_ASPNET_WEBCONFIG_CACHESIZE, as discussed in BXC#5598
[WebConfigurationManager] Reset LRUcache eviction count in Clear()
[System.ServiceProcess.ServiceBase]: Implement Stop() and ExitCode

Stop() wasn't calling OnStop, so a unit test was added, its basic
functionality was implemented, and MonoTODO is removed.

ExitCode now also stops throwing NIE. A unit test is added to confirm
that ServiceBase class doesn't modify it across runs. This property will
be useful for my next commit in mono-service.cs.
[mono-service] Report to syslog if ExitCode ended up != 0 after Stop()

In the previous commit, ExitCode was implemented, so we can query it now.
This is useful because many Windows Services nowadays use this variable
to notify about a problem at stop time.
[System.ServiceProcess.ServiceController] Remove NET_2_0 ifdefs

Also dropping ONLY_1_1.
Better error message
Use field for GetObjectData and this (instead of base) for .ctor in SecurityException to help linker remove more code
[linker] Move the special marking of serializable types in a virtual method
Don't emit thread event twice when explicitly detaching a thread.
Unregister runtime-managed threads before OS cleanup kicks in.

	* mono-threads.c:
	* mono-threads-posix.c: Explicitly detach a thread from the wrapper
	instead of relying on the TLS destructor. This gives a good environment
	most of the time for other parts of the runtime to work with.
On windows, Register/unregister runtime-managed threads from our wrapper.

	* driver.c: Don't auto attach all threads, this is the same behavior of
	posix and mach. We still auto-detach so we can catch foreign threads that
	forgot to do it.

	* mono-threads-windows.c: Detach the thread after the thread fun has run to
	completion, this ensures we cleanup runtime-managed threads in a saner fashion.
Add MonoThreadInfo::runtime_thread so we can know if this thread is managed by the runtime or not.

	* mono-threads.h: Add new field to MonoThreadInfo.

	* threads.c: New API function mono_thread_is_foreign that allows one to query if a given thread
	is foreign or not.
Document the new function and fix a typo on other.
Add lazy rgctx support to s390x
Correct call parameter processing for GENERICINST types