[MWF] DataGridViewRowCollection Clear() speed up

When issuing a Clear() to remove all rows, a ReIndex() was being called for
each row that was being removed.  This is extremely inefficient, instead
do a single ReIndex() after all rows have been removed.

Before doing a Clear() of 30k rows was taking 5.8 seconds.  With this patch
it now takes 670ms.
[MWF] DataGridView: ensure first_row_index will be valid after row removal

DataGridView keeps track of the first visible row in first_row_index.
DataGridViewRowCollection will notify DataGridView its about to delete 1 or
more rows via OnRowsPreRemovedInternal().  When this happens, we need to
ensure first_row_index will still fall within the number of rows that
will remain after the row removal.

This fixes https://bugzilla.xamarin.com/show_bug.cgi?id=24372 which I
reported.
[MWF] Add unit test for #24372
[MWF] Fix off-by-one from 5a5c683

first_row_index needs to be <= RowsLeft - 1, since we are comparing a
row count vs an index.
Fix crash when removing last item in ListView

When the VirtualListSize changes, the focus_item_index should
be reset (similar to how it currently resets the selected indices).

If the last item in a ListView has focus and it is removed by
an another action on the form (i.e. push a button to remove the
current item), then the focused_item_index is not updated when
the VirtualListSize changes, even though that item doesn't exist
anymore.  When the ListView receives focus again, it tries to
invalidate the current focused item which causes an
ArgumentOutOfRangeException.
Remove --enable-nunit-tests option from build system

It isn't used anymore as the classlib tests are always enabled now during 'make check'.
[runtime] Remove conditional logic from LL_SO_OPEN() macro.
[jit] Move the SHARED_EXT define to mono-dl.h, rename it to MONO_SOLIB_EXT.
[System] Bring .NET implementation of System.Text.RegularExpressions

This patch brings .NET's implementation of the RegularExpressions
stack and brings some of the supporting infrastructure required to
build without resource files.

The build commands have been updated with two new defines to assist in
bringing .NET code: MONO (to indicate that the code is being compiled
as part of Mono) and a more granular DISABLE_CAS_USE that is used to
mark regions where Code Access Security is being used in the source
code, as Mono does not actually ship with a working CAS implementation.
Add newline
[System] Bring tests for open bugs on RegularExpressions that have now been fixed
Remove net_2_0 reference from make dist.
Fix case error causing build failure on case-sensitive filesystems
Add SR.cs (for Reference Source regex implementation) to EXTRA_DIST
Simplify System.Data makefile
[System.Core] Switch to common SR class
Remove 2.0 profile csproj files
Remove Mono's previous System.Text.RegularExpressions
[mcs] Add special-cased HostProtectionAttribute handling
Bring .NET implementation of concurrent collections