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.
[MWF] Partially implement Help.ShowHelp
ClientWebSocket: SendAsync endOfMessage inverted.

endOfMessage should indicate whether or not additional message parts will follow the current one. Currently, the meaning in ClientWebSocket.cs is inverted: !endOfMessage indicates that no more parts will follow the current one.

See the WebSockets RFC, 'frame-fin' at the top of http://tools.ietf.org/html/rfc6455#page-31.
Also see the MSDN docs for SendAsync: http://msdn.microsoft.com/en-us/library/system.net.websockets.websocket.sendasync(v=vs.110).aspx
Test ClientWebSocket.SendAsync EndOfMessage
Test connection reuse.
Allow stream reuse when InputStream has been disposed.
If InputStream is disposed FlushInput now sets it to null so a new one can be created.
Additional JWT Security Token Support

Fix line endings.  Add test for JavaScriptSerializer.Deserialize(string input, Type targetType).
File URI's without a host are not UNC paths on Windows.

NUnit breaks when these URI's are treated as UNC paths, so I have no way of
running the tests on Windows without this change to see if it broke anything.
Not all URI tests pass, but the ones that fail seem unrelated to my change.

On Unix, the tests all work, but of course on Unix this is a no-op.

This commit licensed as MIT/X11.
[MWF] Display visual feedback on pressed button (#23869)

When a button is pressed the image and the text needs to be rendered one
pixel to the right and to the bottom so that there is some visual
feedback of the button press. Previously this was only the case if
TextImageRelation was set to Overlay.
[MWF] Improve ellipsis handling

- Don't subtract room for ellipsis. Ellipsis should be
  handled by the renderer so we shouldn't reserve space for it.
  Otherwise we end up not getting ellipsis (because the renderer
  thinks there is enough space available), or we don't use up the
  available space.
- Don't allow text to go below button if we want to show ellipsis.
[eval] Fix delegate; add caching for PrepareEmit

The delegate class did not use the internal cache flag as other type definitions which caused the next evaluation to fail.
Add/update missing bits in order to support MVC5.2.
Add ClientDisconnectedToken property to HttpResponseBase and Wrapper as default None
[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.