cominterop: Free IMarshal interface with the CCW.

This commit is licensed under MIT/X11.
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.
Remove silly SL limitation workaround in Mono.CompilerServices.SymbolWriter.dll
Kill the MOONLIGHT define in Mono.Security.
Kill the MOONLIGHT define in System.Core.