[Printing] Add unit test for Novell bug #602934

This unit test demonstrates the problem reported as #602934
(https://bugzilla.novell.com/show_bug.cgi?id=602934).
[Printing] Improve reported printer settings (Fixes #602934)

Report the actual values of the printer driver in printer settings
instead of using hard coded default values. This fixes Novell bug
#602934 (https://bugzilla.novell.com/show_bug.cgi?id=602934).
[MWF] Fix hang if clipboard source application closes down (fixes #674098)

This change adds a timeout to the Clipboard.Enumerating loop, making a
hang less likely. This fixes Novell bug #674098
(https://bugzilla.novell.com/show_bug.cgi?id=674098).
[MWF] Fix size of text area on message box (Fixes #2090)

Previously some characters might have been concatenated on a message
box that displayed an icon because the size of the text area was
calculated wrong. This fixes bug #2090
(https://bugzilla.xamarin.com/show_bug.cgi?id=2090).
[MWF] Fix MessageBox to wrap texts reasonably

Wrap text in MessageBox window so that the message box has a reasonable
width.  This fixes Xamarin bug #15504.
[MWF] Better account for icon width in MessageBox

This fixes Xamarin bug #16374.
[MWF] Refactor DataGridViewRow.MinimumHeight tests

- fix the tests (tests made partially wrong assumptions which didn't
  match the behavior of .NET).
- split MinimumHeight test in multiple smaller tests that test only
  one thing.
- add a few more tests for MinimumHeight and Row.
[MWF] Adjust DataGridViewRow.Height according to MinimumHeight

When the MinimumHeight gets changed to a value less than Height
we set height to the new minimum height (and fire the
DataGridView.RowMinimumHeightChanged event). This matches the
behavior on .NET.

When the user tries to set Height to a value less than MinimumHeight
we silently set the height to the minimum height (instead of
throwing an exception). This matches also the behavior on .NET.
[MWF] Unit test for Row.Height/MinimumHeight bug (#2394)

This change adds unit tests that demonstrate the bug #2394
where setting Row.Height below MinumumHeight in a DataGridView
doesn't work as expected. The unit tests also document the
behavior of .NET which isn't documented in MSDN.
[MWF] Fix crash when setting Row.Height (Fixes #2394)

When setting both Row.Height and MinimumHeight we need to set the
MinimumHeight first otherwise we will get a crash if the new Height
value is less than the old MinimumHeight value.
[MWF] Add unit tests for DataGridViewRowHeightInfoNeededEventArgs
[MWF] Don't allow Height become less than MinimumHeight

In RowHeightInfoNeededEventArgs we need to check that the new
Height value isn't larger than the current MinimumHeight.
[MWF] Fix text position on buttons (#463149)

Vertically centered text on buttons didn't show up centered. The
referenced bug reports it on Windows. Matters were worse on Linux.
This patch tries to fix the problem on both Windows and Linux. On Linux
the positioning is improved although probably still not perfect.

This fixes Novell bug #463149
(https://bugzilla.novell.com/show_bug.cgi?id=463149).
[MWF] Release capture when clicking LinkLabel (Fixes #2787)

When clicking on a LinkLabel we need to release the mouse capture
otherwise the UI might lock up.

This fixes Xamarin bug #2787.
[MWF] Fix clipping of last line of dropdown (#2462)

The height we calculate is the inner height, so we need to add the top
and bottom borders when setting the height of the listbox. The width
however is the outer width so we need to subtract the left and right
borders when setting the client width.
[MWF] Fix TableLayoutPanel layout bug (#8907)

This fixes the TableLayoutPanel implementation to check for control names
as well as the the controls themselves in looking up the row and column
values.
[Fix] DataContractJsonSerializer fails serializing/deserializing collections
[MWF] Add unit tests for AutoSize behavior of FlowLayoutPanel
[MWF] Fix AutoSize behavior of FlowLayoutPanel (#2912)

A FlowLayoutPanel that has AutoSize set needs to resize if the
contained controls wrap.
[build] Staged setup for building assemblies with cyclic dependencies

This patch introduces an infrastructure to stage the builds for the core
assemblies that have cyclic dependencies.   This deals directly with
the following cycle:

    System.dll requires:
	System.Configuration.dll
	Mono.Security.dll
	System.Xml.dll

	They all require System.dll to be built

    System.Xml requires:
	System.dll
	System.Configuration.dll

    System.Security.dll requires:
	System.dll
	Mono.Security.dll
	System.Xml.dll

Principle
=========

The patch works by directing the build infrastructure to place
intermediate build steps on their own directory.  For example the
first System.dll build that only takes a dependency in mscorlib.dll is
placed not under the final directory but on a subdirectory called
"bare".

The second time that System.dll is built (after Mono.Security and
System.Xml have been built) is placed on the "secxml" directory.

The third time is the final build, and that one ends in the profile
directory.

The same principle is applied to System.Xml.

Better Dependency Tracking
==========================

To handle the multiple stages, the new Makefiles for the various
parties involved in this loop are now able to build their
dependencies.  This means that typing "make" on System.Security or
System.Xml or System will build all of the intermediate steps as
required, without needing the toplevel Makefile to perform multiple
build shots to incrementally build the result.

Bug fixes
=========

We must have regressed at some point the build of System.Xml as we
were only doing one build of it, one without System.Configuration
support.  This patch introduces back the changes to build System.Xml
in two steps.

This patch fixes the setup where we end up rebuilding System.dll and
overwriting it two times as the build progresses as a side effect
(this is what required LIBRARY_USE_INTERMEDIATE_FILE).

Details
=======

library.make:

	Introduces a new "the_libdir_base" which is the raw directory
	where the final output will go.   This points to the same location
	that libdir_base previously pointed to.

	The existing libdir_base is modified to contain an optional
	"intermediate" directory, where intermediate builds can be
	placed.

Other cycles
============

The System.Design assembly was listed as having cycles, but while this
cycle exists in theory, in practice we have not implemented any of the
code that brings the cycle in System.Windows.Forms.Design's
ImageListImageEditor and chances are, we wont any time soon.