Xamarin-5278: Fix Binder.SelectMethod when passed argument is COM object

This patch fixes the problem that reflection doesn't find the
constructor of a class if one of the arguments is a COM object
implemented in unmanaged code. In that case the proxy can't
be converted to a managed object and we didn't check if the
COM object implements the desired interface.

Change-Id: Ie086bbb898ae2de8bd38b9f81422086e017a859e
Some improvements suggested by discussion in pull request

Change-Id: I9d1c2dc31b7f744a7d948fd5fb27d15b77c0ee11
Add unit test for Xamarin-5278

Change-Id: Ic2d9070148b6582933a4116c288d08c176c80738
Build Configuration: Don't build libmono to Release_SGen in x64 Release mode.
Fixed execution of parallel async task to not be broken (made consistent with serial execution)
Bug 5747 Fix: KeventWatcher didn't return subdir names in filenames

Attached extracts the subdirectory by taking a substring of the full
filename path, starting at the length of the watcher filename path
(presuming it matches) plus 1 (to account for the "/" between path and
either subdir or filename).

This only should affect Mac OS -- See this line at top of KeventWatcher.cs:
// System.IO.KeventWatcher.cs: interface with osx kevent
Note the "osx" which is the mac operating system.
Coding Style Changements to make patch more in-line with standards
Remove unnecessary braces to save vertical space.
DataGrid Bug Fix: Crash b/c Columns not tracked properly when switching tables

Columns are tracked in CurrentTableStlye, if user switched between tables
to a subtable or by going back to a previous table, the number of columns
could change, but specifically when navigating back, the previous column
list was not being restored.

The primary fix in this change is to track CurrentTableStyle and grid_style
by pushing them onto a stack when going to a subtable, and popping them
from a stack when we navigate back to previous table.  This resolves the
crash reported in bug 5511 and possibly 5510.

A Secondary fix, which i discovered while testing once i fixed this, was a
simple one-line fix to call EndEdit in NavigateTo and NavigateBack (where we
would push or pop the stack) so that a cell is not left in edit mode when
we switch between tables.  A consequence of not doing this might be when we
switch tables you'd see a cell from the previous table in edit mode on the
new table.

A unit test for this will be committed next for the primary fix.  The secondary
fix can only be tested by visual inspection.
This is a unit test for Bug5487, Bug 5510, and maybe Bug 5511

Based loosely on the code here:
https://bugzilla.novell.com/show_bug.cgi?id=MONO79788
which was the sample code used to recreate the problems in the first place.
This hides Non-Browsable columns from DataGrid

This addresses at least part of the problem reported here:
https://bugzilla.novell.com/show_bug.cgi?id=322563

When you read a table from XML parent/child table relations are established
by virtue of hidden _Id fields.  Those _Id fields are marked non-browsable
when they are loaded.  This change modifies DataGridTableStyles so that
when it comes across a column that is marked non-browsable, it doesn't make
it browsable (viewable).  That is: It hides the internal use columns.
When reloading a DataGrid rows after, for example, a delete, crash fixed

Anything that would require a change in the number of rows, and trigerred
a DataGrid reload, did not cancel editing of the existing field, so there
was a problem if a row was deleted and you were still editing that row
(had the cursor in it).  I noticed this while testing the following bug report
sample code:

https://bugzilla.novell.com/show_bug.cgi?id=323154

Note: That code crashes if you press spacebar TWICE from my testing in either
.NET or Mono.  However, if you press spacebar ONCE this code behaves also
like .NET in that it will actually delete the row visibly from the screen
and prevent related problems from having an editable field open on a
now-deleted row.

\
Fix:Idle event handler was called on every thread rather than thread assigned on

Summary of changes in order git diff --staged is giving them to me:

(1) Each Xplat driver :
-local "Idle" variable remove, replaced with a Driver-level Idle_Threads
which is assigned by what is now the Idle Property.

-When Idle Called from with thread it used to do:
if (Idle != null)
   Idle (this, e)

now we have to do some additional checks and change the call similar to as
follows to get the per-thread idle event handler:

(pseudo-pseudo-code)
id=ManagedThreadId;
if (Idle_Threads is not null and it contains a key for the id and the key
indexes into a non-null event handler) then
   Idle_Threads [id] (this, e);

(2) Xplat Driver
Here's where the property is added and assigns the Idle event handler to
Idle_Threads.  A Lock was needed the first time we create the Idle_Threads
dictionary.  The Idle_Threads dictionary indexes by managed thread id and
maps onto an event handler for each one.

(3) Win32 Specific change
In my testing, I noticed that Win32 did not call Idle as part of its normal
Run loop processing.  So, when it would call GetMessage and it was Blocking
we now check Idle if we were going to block.  We don't actually call idle
if we first peekMessage and find a message, in those cases we just treat
it as if GetMessage Got the message.  If we are blocking and peek returns
no messages, we call idle.  If we have already called idle once on this
pass through the GetMessage Loop we set CheckIdle to false and go
back to the to to PRocessNextMEssage but this time we block rather than
peek and call idle.

This code was tested on Win32, MacOS/Carbon and Linux/X11.  There have been
some minor formatting changes (Code style) since the testing, which should
not affect test results.
Bug 1202 Fix: Adds float.NaN checks to DrawLine

As reported in Bug1202, Graphics.DrawLine was drawing a line when one of the
x/y parameters was NotANumber.  This differred from Microsoft.NET Behavior.
This patch brings it back in line by adding the checks.

This includes an extended unit test which now fails without this patch and
passes with it.

https://bugzilla.xamarin.com/show_bug.cgi?id=1202

No additional System.Drawing unit tests fail with this patch than without
it, presuming this patch is applied.
Merge pull request #344 from robwilkens/bug1202

Bug 1202 Fix: Adds float.NaN checks to DrawLine
Fixed typo causing all attributes in the namespace System.Compiler.RuntimeServices to be treated as DynamicAttribute
Merge pull request #345 from erik-kallen/FixTypoDeterminingDynamicAttributes

Fixed typo causing all attributes in the namespace System.Runtime.CompilerServices to be treated as DynamicAttribute
Implement control padding. Fixes Xamarin bug 2562.
Only paint the ToolStripItem BackColor if it's not the default one. Fixes Xamarin bug 5834.
BindingFlags.Public needed here as Exception.HResult is now public in .NET 4.5. This solves a NullReferenceException on GetGetMethod, which causes the static constructor to fail.