[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.