Introduce UILayoutPolicy interface

* UIWidget: Introduce getter & setter for size policy control.
* UISpacerItem: Implement constructor for size policy control.
* VBoxLayout: Introduce add_spacer variant.
Relocate the updating of the decorator boundaries within layouts

Move the updating responsibility to its proper place (to the responsible
widget, of course!

* UISpacerItem: Change UILayoutPolicy enum to uint32 in constructor and
helper method; much less typing!

* ListBox: Set the default size policy to 'Preferred'.
Initial refactoring for horizontal box layouts

(Not working yet; that's next up!)

* gui_config: Remove Orientations::NoDirection

* Rename VBoxLayout to UIBoxLayout and implement two convenience
class constructors -- UIVBoxLayout, UIHBoxLayout.
Initial working implementation of horizontal box layouts