Bug fixes for UIBoxLayout & more refactoring of layout tests

* UIWidget: Introduce set_title method variant.
* UIWidget: Introduce set_geometry method; this is a helper method for
automatically setting relative coordinates.
* UIWidget: Introduce resize method; helper method for resizing a widget
after construction; this is necessary for updating layout items & their
decorators.
* UIWidget: Fix UIWidget ctor for self-type pointer initializaiton.

* UILayout: Add const keyword to find_widget, set_alignment method
arguments.

* UIBoxLayout: Fix a couple calculation bugs in ::set_bounds.

  ButtonLayoutTest & ListBoxLayoutTest:
* Dedicate a widget (layout_widget) for use with the layout; this lets
us get rid of specifying coordinates within ::create_layout.

* ButtonLayoutTest: Remove NullSizeHorizontalLayout &
NullSizeVerticalLayout tests.

* UIWidgetTest: Add additional tests.

  common.cpp (for layouts):
* Widgets are now automatically inserted into the parent window for us
within the ::create_layout method.

* You can now have an uneven number of spacer and widget items when
using ::create_layout.

* Introduce set_layout_alignment & set_widget_alignment methods.
Fix bug preventing Windows platform from running tests interactively

Google Test's main library overwrites our main function, losing the
ability to track the passing of command line arguments.