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.
Enable build on RHEL and CentOS
Remove excessive shortcut key matching in ToolStrip

This fixes https://bugzilla.xamarin.com/show_bug.cgi?id=23532.
Fix potential crash in ListView.ItemControl.ItemsMouseDown

This fixes Xamarin bug 23591.  Side-effects of internal processing of
ItemsMouseDown can cause ItemsMouseUp before ItemsMouseUp has finished.
Add a third AOT location, alongside ~/.mono/aot-cache and the assembly dir

Unless running in on-demand AOT mode, the AOT runtime will look for an AOT cache alongside the assembly (e.g. /usr/lib/mono/4.5/mscorlib.dll.so).

This patch adds a second search path to the non-on-demand AOT loader, /usr/lib/mono/aot-cache/ARCHITECTURE/path/to/assembly.dll.so

This new structure makes it possible to have more than one Mono architecture on a system, sharing assemblies but not sharing AOT caches (for example, i386 and amd64 Mono on the same system, for different needs)
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
[runtime] Disable the check for overlapping reference and non-reference fields, too much code depends on this to work.
[llvm] Fix a regression caused by 6ec1ebf99078a996ca16fd0c56cbd4e96e32ed41. Do the direct call rewrite only if the caller and callee signature matches.