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 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.
Formatting changes to adhere to existing code style.
Fixed IsSwitch to check for files ending in '.exe'.
Removed checks for all-uppercase extensions in Uninstall.
Include <stdint.h> to allow cross-compilation from OS X.

Cross-compiling mono on an OS X host for a Windows target using
mingw-w64 fails because of undefined __int64 types in a couple of places.

Including <stdint.h> fixes this and allows the OS X host to cross-compile
a Windows mono.

It probably sounds like an obscure use-case, but the wine-mono
project does just this, so ability to cross-compile for Windows on OS X
is crucial to being able to build wine-mono on a Mac.
System.Web: Fixed bugs in HttpRequest.GetBufferlessInputStream()
Fix the build.

Mono.Documentation/webdoc.cs(199,87): warning CS0618: `Monodoc.Node.Nodes' is obsolete: `Use ChildNodes'
Mono.Documentation/webdoc.cs(199,87): error CS0266: Cannot implicitly convert type `System.Collections.ArrayList' to `System.Collections.Generic.IEnumerable<Monodoc.Node>'. An explicit conversion exists (are you missing a cast?)
Mono.Documentation/webdoc.cs(199,87): error CS1662: Cannot convert `lambda expression' to delegate type `System.Func<Monodoc.Node,System.Collections.Generic.IEnumerable<Monodoc.Node>>' because some of the return types in the block are not implicitly convertible to the delegate return type
Mono.Documentation/webdoc.cs(199,40): error CS1928: Type `Monodoc.Node' does not contain a member `TraverseDepthFirst' and the best extension method overload `Mono.Rocks.ObjectRocks.TraverseDepthFirst<Monodoc.Node,Monodoc.Node>(this Monodoc.Node, System.Func<Monodoc.Node,Monodoc.Node>, System.Func<Monodoc.Node,System.Collections.Generic.IEnumerable<Monodoc.Node>>)' has some invalid arguments
Mono.Rocks/ObjectRocks.cs(72,38): (Location of the symbol related to previous error)
Compilation failed: 3 error(s), 1 warnings
Make full-aot uses mixed vt/ref instances when full gsharedvt instances cannot be used because of generic parameter constraints.
Break direct TPL dependency from stream classes
Fix the handling of dynamic imt arguments in mono_arch_emit_imt_argument () on ARM by emitting an extra OP_MOVE for them, as with all other arguments.
Implement a general version of the rgctx fetch trampolines, which receives the slot as an extra argument. This is needed in the full-aot case, as classes with many generic methods can use more than 128 rgctx slots.
Implement support for unlimited number of gsharedvt arg trampolines.
Fix failing test
Make ExpressionVisitor visible in mobile 3.5 profile
Fix building sgen test suite.
Fix the ARM build.
Build debugger tests with disabled code optimizations