Prevent exception in finalization of Form class

If initialization of the Form class or one of its base classes fails, possibly because X11 is not available and the constructor of the parent Control class throws an exception, the owned_forms member is not initialized. This results in a NullReferenceException during initialization, if the error that occurs during construction is handled.

Stack traces:
Unhandled Exception:
System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.WindowsFormsSynchronizationContext ---> System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.XplatUI ---> System.ArgumentNullException: Could not open display (X-Server required. Check you DISPLAY environment variable)
Parameter name: Display
  at System.Windows.Forms.XplatUIX11.SetDisplay (IntPtr display_handle) [0x00000] in <filename unknown>:0
  at System.Windows.Forms.XplatUIX11..ctor () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.XplatUIX11.GetInstance () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.XplatUI..cctor () [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Windows.Forms.Theme.get_MenuAccessKeysUnderlined () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.SystemInformation.get_MenuAccessKeysUnderlined () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.Control..ctor () [0x00000] in <filename unknown>:0
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control:.ctor ()
  at System.Windows.Forms.WindowsFormsSynchronizationContext..cctor () [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Windows.Forms.Control..ctor () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.ScrollableControl..ctor () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.ContainerControl..ctor () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.Form..ctor () [0x00000] in <filename unknown>:0
  at AutoCRCheck.frmOptions..ctor () [0x00000] in <filename unknown>:0
  at (wrapper remoting-invoke-with-check) AutoCRCheck.frmOptions:.ctor ()
  at AutoCRCheck.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.WindowsFormsSynchronizationContext ---> System.TypeInitializationException: An exception was thrown by the type initializer for System.Windows.Forms.XplatUI ---> System.ArgumentNullException: Could not open display (X-Server required. Check you DISPLAY environment variable)
Parameter name: Display
  at System.Windows.Forms.XplatUIX11.SetDisplay (IntPtr display_handle) [0x00000] in <filename unknown>:0
  at System.Windows.Forms.XplatUIX11..ctor () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.XplatUIX11.GetInstance () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.XplatUI..cctor () [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Windows.Forms.Theme.get_MenuAccessKeysUnderlined () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.SystemInformation.get_MenuAccessKeysUnderlined () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.Control..ctor () [0x00000] in <filename unknown>:0
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control:.ctor ()
  at System.Windows.Forms.WindowsFormsSynchronizationContext..cctor () [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at System.Windows.Forms.Control..ctor () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.ScrollableControl..ctor () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.ContainerControl..ctor () [0x00000] in <filename unknown>:0
  at System.Windows.Forms.Form..ctor () [0x00000] in <filename unknown>:0
  at AutoCRCheck.frmOptions..ctor () [0x00000] in <filename unknown>:0
  at (wrapper remoting-invoke-with-check) AutoCRCheck.frmOptions:.ctor ()
  at AutoCRCheck.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0

---------------------------------------------------------
Handling the previous exception results in the following exception:

System.NullReferenceException: Object reference not set to an instance of an object
  at System.Windows.Forms.Form.Dispose (Boolean disposing) [0x00000] in <filename unknown>:0
  at AutoCRCheck.frmOptions.Dispose (Boolean disposing) [0x00000] in <filename unknown>:0
  at System.ComponentModel.Component.Finalize () [0x00000] in <filename unknown>:0
Fix error in ToolStripItem finalization

The Dispose function in ToolStripItem should not remove itself from its owner during finalization. Finalization implies that the owner has also been garbage collected, and accessing it may result in undesirable behaviour. More specifically, the call to owner.Items.Remove ultimately may boil down to a call to GDI+ throwing an Exception like the following:

Program.UnhandledException: System.ArgumentException: A null reference or invalid value was found [GDI+ status: InvalidParameter]
  at System.Drawing.GDIPlus.CheckStatus (Status status) [0x00000] in <filename unknown>:0 
  at System.Drawing.Graphics.GdipMeasureString (IntPtr graphics, System.String text, System.Drawing.Font font, System.Drawing.RectangleF& layoutRect, IntPtr stringFormat) [0x00000] in <filename unknown>:0 
  at System.Drawing.Graphics.MeasureString (System.String text, System.Drawing.Font font, Int32 width, System.Drawing.StringFormat format) [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.Drawing.Graphics:MeasureString (string,System.Drawing.Font,int,System.Drawing.StringFormat)
  at System.Windows.Forms.TextRenderer.MeasureTextInternal (IDeviceContext dc, System.String text, System.Drawing.Font font, Size proposedSize, TextFormatFlags flags, Boolean useMeasureString) [0x00000] in <filename unknown>:0 
  at System.Windows.Forms.TextRenderer.MeasureText (System.String text, System.Drawing.Font font, Size proposedSize, TextFormatFlags flags) [0x00000] in <filename unknown>:0 
  at System.Windows.Forms.ToolStripItem.CalculateAutoSize () [0x00000] in <filename unknown>:0 
  at System.Windows.Forms.ToolStripItem.set_InternalOwner (System.Windows.Forms.ToolStrip value) [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.ToolStripItem:set_InternalOwner (System.Windows.Forms.ToolStrip)
  at System.Windows.Forms.ToolStripItemCollection.Remove (System.Windows.Forms.ToolStripItem value) [0x00000] in <filename unknown>:0 
  at System.Windows.Forms.ToolStripItem.Dispose (Boolean disposing) [0x00000] in <filename unknown>:0 
  at System.Windows.Forms.ToolStripDropDownItem.Dispose (Boolean disposing) [0x00000] in <filename unknown>:0 
  at System.Windows.Forms.ToolStripMenuItem.Dispose (Boolean disposing) [0x00000] in <filename unknown>:0 
  at System.ComponentModel.Component.Finalize () [0x00000] in <filename unknown>:0
HttpListener now listens on default ports if not specified instead of random
[corlib] Throw CultureNotFoundException using invariant culture. Fixes #17690
Merge pull request #891 from DavidKarlas/listenerprefix

HttpListener now listens on default ports if not specified instead of random
[mcs] Add nested types handling to check whether types unify for some type parameter substitutions. Fixes #17647
Properly preserve VPF registers in iOS. Fixes #17793.
[mcs] Add NamespaceExpression to avoid problems with error location for misused namespaces. Fixes #17803
Add unit test for AggregateException.GetBaseException that works on .net but is broken on Mono.
Merge pull request #900 from Blewzman/FixAggregateExceptionGetBaseException

Add unit test for AggregateException.GetBaseException that works on .net but is broken on Mono.
[runtime] Add two variants of mono_gc_bzero and mono_gc_memmove. They better convey the behavior we need.

After reviewing all usage of mono_gc_bzero and mono_gc_memmove, I found that there are two usage patterns
we care for:

1)Aligned pointer, any size, have managed pointers.
This happens when directly dealing with managed objects like when cloning of boxing.
On this case, all pointers MUST be aligned.

2)Maybe aligned pointer, any size, might have managed pointers.
This happens for functions dealing with structs, specially around boxing and unboxing them.
Our data layout code ensures that structs with managed layout are aligned to at least a word.
This means that if the pointer is unaligned, no managed pointer can exists in the memory range
been processed.

Given those two scenarios, lets introduce two variants that enforce those constrains.

_aligned:
Pointers must be aligned, ensures atomicity of word copies;

_atomic:
If pointers are aligned, works like _aligned, otherwise it inherits the behavior of the
system memmove&memset.

The above split ensures we won't have to deal with any RISC unaligned load nonsense.

It also adds some sanity checks to code that must respect alignment.

We still need fast code for mono_gc_memmove_aligned and mono_gc_bzero_aligned.

We still need to verify if a version of memcpy version is needed. Maybe the extra
branch is not such a perf penalty.
[llvm] Disable the 'dse' optimization pass as it is buggy and causes #17616. Fixes #17616.
Merge pull request #899 from UCIS/patch-4

Fix error in ToolStripItem finalization
Merge pull request #898 from UCIS/patch-3

Prevent exception in finalization of Form class
Add [Category ("NotWorking")] to failing test.
Merge pull request #901 from Blewzman/FixAggregateExceptionGetBaseException

Add [Category ("NotWorking")] to failing test.
[Test] Change FileTtest.MoveTest to use the temporary directory so it can be executed, without an access denied, on most environment (e.g. an iOS device)
[Test] Avoid MethodInfoTest.GetMethodBody failure when executed on a release (IL stripped) application on iOS
[Test] Avoid StackFrameTest.* failures when debugging symbols are not available (e.g. release configuration on iOS or Android)
[Test] Fix previous test change as the test is dependent on line numbers