Use more specific types
Disable more security context tests on mobile
Merge pull request #593 from Cynede/master

Python 3 compatibility in gen-descriptor-tests.py
Fix AOT on osx+amd64.
Modify the way calls to icalls are made from the icall wrappers. Previously, the address to call was encoded in an OP_PCONST, and various pieces of code looked up the value in the jit icall table to see if it was an icall address. With the new approach, the fact that this is an icall address is explicit through the JIT.
Make the JIT icall wrappers for opcode emulation jit icalls call the C icall function directly on MT.
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
[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.