Merge pull request #784 from alesliehughes/master

Support for ManagementQuery and ObjectQuery classes
Disable ClientWebSocketTest.cs (for mobile) until the type itself is added to the mobile profile (i.e. added to mobile_System.dll.sources). Fix building/running System.dll unit tests
Add InterlockedExchange64 () based on GCC intrinsics for MinGW.

As with InterlockedCompareExchange64, MinGW appears to lack this
one from its Windows headers.
[runtime] Fix the DISABLE_JIT build on ARM.
Add separate icall for System.Threading.VolatileRead (object&).

Previously, the icall that was used for the IntPtr overload was
used for this overload as well. Having a separate icall is less
error-prone for future modification as the two types are no longer
conflated.
Add more missing atomic functions for MinGW.
[runtime] Fix the windows build.
[runtime] Fix a warning.
fix DivideByZeroException in Random.Next()
Provide more public API to inspect MonoTypes, MonoClasses and MonoMethodSignatures.
Merge pull request #786 from xplicit/master

fix DivideByZeroException in Random.Next()
Don't redeclare desc in mini_create_ftnptr on ppc64
Merge pull request #787 from directhex/master

Don't redeclare desc in mini_create_ftnptr on ppc64
Add Interlocked{Read,Write}{8,16,Pointer} functions.
Fix the semantics for System.Threading.Volatile methods.

This is a bit tricky. The System.Threading.Thread.Volatile* methods
don't actually guarantee atomicity; all they guarantee is that the
runtime will insert acquire barriers for loads and release barriers
for stores. The methods in the System.Threading.Volatile class,
however, require both barriers *and* atomicity.

So, we need an entirely separate set of icalls for the Volatile
class in order to get the right semantics there.

These APIs are insane.
Fix mono_gc_wbarrier_generic_store_atomic semantics.

It should ensure that stores are fully atomic with barriers.
[runtime]Properly calculate the bitmap of valuetype [ThreadStatic] variables.

We must account that a valuetype field offset is relative to a boxed instance
and TLS memory stores a valuetype unboxed.
Add a --with-llvm=<llvm prefix> argument to configure to make the location of llvm-config explicit, instead of reading it from the PATH, which might be different on a reconfigure.
Move mono_get_optimizations_for_method to mini.c, since driver.c is only included in binaries, not libraries.
Add OrderedDictionary to the mobile profile.

Requested in support case #49635.