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).
cominterop: Free IMarshal interface with the CCW.

This commit is licensed under MIT/X11.
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).
Added checks for BSD-compliant protocol constants.
Fixed the checks for a couple of Linux-specific constants so they work correctly (they included the wrong header).
Added a check for the Linux-specific constant IP_PMTUDISC_DO; this'll be used with IP_MTU_DISCOVER in a future patch to make Linux sockets match BSD/OSX/Windows behavior.
Fixed issue with TypeConverter.IsValid always returning true

Now returns true if null and true if the type passed in can be
converted to, and the conversion itself didn't throw an exception.

If the type cannot be converted to, or the conversion threw, then
it returns false.
Added test for In32 IsValid
Fixed formatting
Fixed the way assemblies are located when uninstalling so .exe assemblies can be uninstalled from the GAC.
Prefer __sync_bool_compare_and_swap() over PPC inline asm.

Debian's GCC 4.4 in particular does not compile the PPC assembly.
Fix PPC link error on mono/mini due to missing symbol.
ucm2cp.c: generate codepage classes with proper EncoderFallback support
regenerated encoder classes with a patched ucm2cp.c with proper EncoderFallback support
Tests for MidEast encodings (stub, only turkish and generic handlefallback tests)
Formatting changes to adhere to existing code style.
changed ucm2cp.c to generate less changes, also removed NET < 2.0 support
re-generated codepages with new ucm2cp.c: removed dotnet 1.0 support for cleaner code
improved encoder tests for I18N.MidEast
renamed test
Fixed IsSwitch to check for files ending in '.exe'.
Removed checks for all-uppercase extensions in Uninstall.