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 WebClient.UploadFileTaskAsync ContentType. Covers 19529.
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.
[threadpool] Add suspend pushing to a WSQ
[threadpool] Add heuristic to approach the optimal number of threads
[threadpool] Remove process_idle_times so monitor_thread is the only function to change the number of threads
[threadpool] Put the monitor thread to sleep if there has been no tasks for the past 5 seconds (NON_BUSY_INTERATION * SAMPLES_PERIOD)

This should improve a lot power consumption, because this avoir having a thread waking up every 500ms keeping the CPU awake.
Enable build on RHEL and CentOS
Remove excessive shortcut key matching in ToolStrip

This fixes https://bugzilla.xamarin.com/show_bug.cgi?id=23532.
[jit] Define NOMAP32BIT on winx64.
TimeZoneInfo is now always present in corlib.
Prior to net_4_0 TimeZoneInfo is a private class.
CurrentSystemTimeZone.GetUtcOffset now supports multiple DST periods.
DateTime.Now was returning wrong values when system TimeZone had more than one daylight saving time.
Fixes 22648.
Removed unused CurrentSystemTimeZone fields and methods.
Revert "Missing Args checks."

This reverts commit 8b9c60075f7b97fe88c3c588968977ff9bcf8c28.
Revert "Refresh HashAlgorithmTest to match changed NullStream behaviour in 8b9c60075f7b97fe88c3c588968977ff9bcf8c28"

This reverts commit 7ece665d16714db0979bde5df254231c5be24f10.