Properly convert COM error codes to C# exceptions

Also use additional information provided by IErrorInfo to fill in
exception details.

To make use of IErrorInfo on Linux a suitable implementation has to be
provided, e.g. by including libcom plus adding a mapping from
oleauth32.dll to the shared library that provides the implementation.

This completes mono bug 496138
(https://bugzilla.novell.com/show_bug.cgi?id=496138)
Set ErrorInfo in Marshal.GetHRForException

Marshal.GetHRForException had a MonoTODO because it needs to set
the errorinfo object so that exceptions get properly passed to
unmanaged code. Since not all managed exceptions have a corresponding
HR value but we might need to get to the original thrown exception
we implement a ManagedErrorInfo helper class that implements the
IErrorInfo interface but also stores the exception.

In GetExceptionForHR we check if the errorinfo we get is a
ManagedErrorInfo. If it is we return the exception stored in there
(if it converts to the same error code), otherwise we construct a new
exception.
Additional JWT Security Token Support

Fix line endings.  Add test for JavaScriptSerializer.Deserialize(string input, Type targetType).
[libgc] Eliminate warning about redefinition of GC_WIN32_THREADS

Makefile defines GC_WIN32_THREADS as 1 but gc_config_macros was
redefining as defined but with no value.

Signed-off-by: Alex J Lennon <ajlennon@dynamicdevices.co.uk>
[llvm] Disable the extension of i8/i16 arguments to i32 on arm64, since the ios calling convention passes them differently than i32. Fixes #22800.
Bump Mono version -> 3.12.1
Merge pull request #1337 from RyanMelenaNoesis/master

Additional JWT Security Token Support
Merge pull request #1378 from DynamicDevices/ajl/warnings

[libgc] Eliminate warning about redefinition of GC_WIN32_THREADS
[corlib] Add some missing memory barriers to the ConcurrentQueue methods to order memory operations. Fixes #22788.
Merge pull request #944 from ermshiperete/bug-novell-496138

Improve COM error handling
support Power 64 LE and the new ELF v2 ABI
[ppc] Bump (more) instruction sizes after 51c454f6b03b468273bb93db2aa9b76e330a7e57.

This fixes ~30 failures in mono/tests (e.g., appdomain) for powerpc, like this:
	wrong maximal instruction length of instruction atomic_add_i4 (expected 20, got 28)
	* Assertion: should not be reached at mini-ppc.c:5235

The commit 51c454f6b03b468273bb93db2aa9b76e330a7e57 introduced 2 ppc_sync
instructions in OP_ATOMIC_CAS_I4/8 *and* OP_ATOMIC_ADD_NEW_I4/8 (mini-ppc64.c).

Accordingly, commit 83a34c40c6a0911a0c27afce63f5ea7ec2bb4b26 updated the maxlength
(+8 bytes) of atomic_cas_i4/8 - *but not* atomic_add_new_i4/8 (cpu-ppc64.md).

Recently, commit b784b866dac0c97780357bf81bf0fa3ebeffa4e made atomic_add_new_i4/8
exercised (as 'atomic_add_i4/8') - with an incorrect/non-updated 20-byte maxlength,
which should actually be 28.

Thus:
	wrong maximal instruction length of instruction atomic_add_i4 (expected 20, got 28)

Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>