Runtime test to reproduce threadpool+ProcessExit issue

Do make test-process-exit to run
Fixes threadpool+ProcessExit problem

The threadpool was being shutdown too early, before the ProcessExit event was fired.
This led to bugs such as NLog not shutting down
(http://nlog-project.org/2011/10/30/using-nlog-with-mono.html).
Swap the condition -- instead of checking for OS X and assuming anything else uses the Linux behavior, check for Linux and let other platforms use the default POSIX behavior. This allows sigaltstack to be used on BSD variants.
This change has been tested (with the standard test suite) on FreeBSD 9.1 (i386, amd64) and Ubuntu 12.04.1 (i386).
Remove #ifdefs so ss_flags is always set to zero.

Removed the #ifdefs which used a different value for 'ss_flags' on Linux.
According to the POSIX standard, the SS_ONSTACK flag can never be used as input to the 'sigaltstack' function -- it can only be set by the 'sigaltstack' function itself, and tested after the function returns.
Fixed handling of modifier keys in KeyEventArgs constructor (bug #6707)
Fix some ARM assembly in MONO_CONTEXT_GET_CURRENT ().
[sgen] Allow empty parameters in MONO_GC_PARAMS and MONO_GC_DEBUG.

This allows easy appending/prepending, like so:

    export MONO_GC_PARAMS="major=marksweep-conc,$MONO_GC_PARAMS"
[Mono.Debugger.Soft] Made the receiver thread a background thread and gave it a name
corlib: Implement System.Type.GetTypeFromCLSID.

This commit is licensed as MIT/X11.
[sgen] Just warn, don't abort, on invalid MONO_GC_PARAM or MONO_GC_DEBUG options.
Clean up the code which handles prepending _ to global symbol names on MACH by doing it in aot-compiler.c instead of the image writer.
Add stubs for some NET 4.5 ThreadLocal ctors/methods.
Implement Volatile.Read/Write<T> and Interlocked.MemoryBarrier ().
[xbuild] Replace string.ToLower() comparison with OrdinalIgnoreCase comparison

Fixes: https://bugzilla.xamarin.com/show_bug.cgi?id=10946

The scenario is the "turkish-i problem": Have an MSBuild Task Assembly
which calls ITaskItem.GetMetadata("Identity") (like, oh, the
Xamarin.Android build system...). Run in a Turkish locale (tr-TR), and
things fail badly:

	Error executing task AndroidComputeResPaths: System.ArgumentException: Invalid reserved metadata name
	  at Mono.XBuild.Utilities.ReservedNameUtils.GetReservedMetadata (System.String itemSpec, System.String metadataName, IDictionary metadata) [0x00000] in <filename unknown>:0
	  at Microsoft.Build.Utilities.TaskItem.GetMetadata (System.String metadataName) [0x00000] in <filename unknown>:0
	  at Xamarin.Android.Tasks.AndroidComputeResPaths.Execute () [0x00000] in <filename unknown>:0
	  at Microsoft.Build.BuildEngine.TaskEngine.Execute () [0x00000] in <filename unknown>:0
	  at Microsoft.Build.BuildEngine.BuildTask.Execute () [0x00000] in <filename unknown>:0

Wat? Well, in tr-TR, "Identity".ToLower() is "ıdentity", which
doesn't match match anything in GetReservedMetadata()'s `switch`
statement, so it throws an ArgumentException. *BOOM*.

So, if you need a culture-invariant comparison, USE IT.

Related: We could have just s/ToLower/ToLowerInvariant/g, which would
have fixed the problem, but would still result in lots of string
temporaries that aren't really necessary. Use the appropriate
string.Compare() or string.Equals() methods instead to avoid the
string temporary as well.
Merge pull request #596 from madewokherd/typefromclsid

corlib: Implement System.Type.GetTypeFromCLSID.
Remove generated file dependency to make fresh checkout tests work out of box
Actually iterate returned array
Remove confusing trailing dot
Make begin-invoke/end-invoke wrappers for generic delegates like Func/Action generic, similarly to 8eae1a7d721b37c9e16e77776d9774b2756dcc68.
Fix a typo introduced by c808ced1e2fa580762a8022754ded9dcaeef0a81.