Improve layout management logic

* UILayout: Initialize layout item spacing to one (1) at time of
construction.
* UILayout: Consolidate functionality found in ::update to
UIWidgetLayoutItem::set_geometry and stop using UILayout::update call.
This seems to be much less confusing for us!

* UIWidget: Disable hiding of a widget when null positioning is passed;
this is needed so that we can pass Point2i::null to our widgets and rely
on the coordinates provided from the layout object.
* UIWidget: Set the position of the parent widget to the coordinates of
the layout managed object when calling ::set_layout.

* UIWidgetLayoutItem: Set both the decorator and its own positioning
coordinates relative to the parent's existing positioning.

* VBoxLayout: Subtract one from the total count in ::minimum_size,
::size_hint
methods. If we do not do this, we end up with wasted spacing.

* examples/gui: Use layout manager for listbox_ex0, listbox_ex1,
listbox_ex2 widgets.
Introduce nom::SizePolicy enum

* Move nom::Alignment enum to nom::priv namespace; intended for use with
nom::Anchor.
Sprite, MessageBox, QMessageBox: Disable NOM_LOG_TRACE output