UIBoxLayout: Fix UISpacerItem & internal layout spacing bugs

* Button: Use the label's width as the width of the returned Size in
the size_hint method.
* Button: Return the minimum size of the widget when all else fails
inside the size_hint method.

* ListBox: Use nom::DEFAULT_FONT_SIZE within both size_hint and update
methods.
* ListBox: Use the font point size of the UIStyle when available; this
is done in both ::size_hint && ::update.

* examples/gui_listbox: Introduce several assertions for ensuring
layout logic is sane. (These will be relocated soon!)

* examples/gui_button: Introduce several assertions for ensuring
layout logic is sane. (These will be relocated soon!)