Additional implementation work on layout management

* UILayout: Return a more sane maximum size, minimum size.
* UIWidgetLayoutItem: Return a more sane minimum size and size
hint.

* VBoxLayout: Do not assume a default size hint.
* VBoxLayout: Fuck up the method logic of set_geometry.

* VBoxLayoutTest: Refactor unit tests; break up into two core API
tests.

* VBoxLayoutTest: Introduce unit tests for VIII.png and Arial.ttf.

* UIWidget: Introduce size_hint method; preferred widget size; this is
for layout management.
* UIWidget: Return a more sane size hint and minimum size.
* UIWidget: Implement setting of a widget's font recursively; this
allows us to propagate a font resource from a top-level widget to its
children (widgets). For unit tests, this allows us to initialize the
top-level window during construction, and then update as our font needs
change from test to test.

* ListBox: Provide re-implementation of UIWidget::size_hint logic; this
is necessary for layout management.
* ListBox: Initialize minimum size at the time of construction.
* ListBox: Disable internal update in constructor and text color
setter methods.
* ListBox: Change the generated text label's point size to 12; this
helps simplify unit testing of layout management...