UIEventDispatcher: Bit of clean up

* UIEventDispatcher: Change callback_type to UIEventCallback; this is
the same as before, but simply wrapped within an object.

* UIEventDispatcher: Make class copyable; re-add copy constructor and
copy assignment operator.

* UIEventDispatcher: Introduce observers getter & setter methods
Make default widget name tags lower case
Size2: Introduce min, max helper methods, * & *= operators
Additional fleshing out of UILayout framework

* UILayout, UILayoutItem, UISpacerItem: Additional clean up and
implementation of interface.

* Introduce UIWidgetLayoutItem container class.

* VBoxLayout: Concrete class interface using our new layout
framework.

* gui_config.hpp: Introduce Orientation enumeration.

* Window: Introduce getters & setters for max_size, min_size and
size_hint class variables.
* Window: Introduce getter & setter for layout class variable.
* Window: Introduce getter & setter for visibile class variable.