Consolidate use of gui_window object in layout unit tests

	ButtonLayoutTest && ListBoxLayoutTest:
* Replace gui_window array vaar with single object -- main_window;
the first gui_window instance is entirely useless.

* Properly free the top-level (parent) UIWidget object at destruction.
Introduce ctor for init from existing object pointers

This new ctor is provided primaraily for the convenience of quick
construction.

  UIWidget:
* Introduce ::swap method & implement within pointer ctor & assignment
operator.
* Introduce ::set_children method.
* Check for nullptr in ::set_parent.
* Check for nullptr in ::set_decorator; this resolves a crash we
experienced when we initialize from a UIWidget with no existing
decorator.

* Introduce UIWidgetTest.