Initial working implementation of horizontal box layouts
Button example widgets now use a UIHLayoutBox

Yes, the text labels on the buttons are not rendering correctly; this is
due to the update logic of the widget (assumed explicit coordinates) and
will be fixed soon.

* BitmapButton: Explicitly set minimum size, register an event listener
for ON_WINDOW_SIZE_CHANGED, and re-implement ::size_hint.

* BitmapButton: Explicitly set minimum size, register an event listener
for ON_WINDOW_SIZE_CHANGED, and re-implement ::size_hint.

* UILayoutPolicy: Use Policy::Preferred as the default size policy
type at construction.
Button: Fix updating of text string when added to a layout