Fix building of examples

* examples/CMakeLists.txt: Remove NOM_BUILD_EXTRA_RESCALE_ALGO_UNIT
variable; this is no longer a required dependency. This was preventing
multiple examples from being built.
Fix compile errs with gui_button & gui_listbox examples
Fix mouse click event firing with Text labels (GUI widgets)
Overhaul widget events system -- abstract widget event types

This allows us to derive unique widget events for the GUI
subsystem; i.e.: UIWidgetResizeEvent, UIWidgetTreeEvent,
UIWidgetMouseEvent, etc.

* Rename EventDispatcher to UIEventDispatcher.
* Implement abstract interfaces for EventDispatcher; IUIEventDispatcher,
IUIEventListener.
* Introduce NOM_CONNECT_UIWIDGET_EVENT macro.

* UIEvent is now a base class for widget events. The UIEvent
enumeration has been merged into this interface, and is now
an anonymous enum.
* UIWidgetEvent now derives from UIEvent.
* Introduce UIWidgetTreeEvent.

* Remove UIEventCallback; UIWidgetListener is its replacement.
UnitTestTemplate: Fix compile err
Decouple audio subsystem (make it an optional build feature)

* Introduce pure abstract interfaces for OpenAL audio interface.
* Introduce NullAudio interface.
* Implement Music::togglePause && Music::fadeOut in SoundSource.
* Remove nom::OpenAL namespace.

* Introduce unit tests for NullAudio & OpenAL interfaces.
Clean up of widget resize / update events

* UIEvent: Remove ::etype method (unnecessary).
* UIWidgetEvent: Move id class var, getters & setters to UIEvent.

* UIWidget: Declare default ::on_update, ::on_size_changed methods
for ON_WIDGET_UPDATE && ON_WINDOW_SIZE_CHANGED events. This allows us
to remove the implementations in UIWidget deriving classes.

* Introduce UIWidgetResizeEvent class; this allows us to remove
the resized_bounds_ class var from UIWidgetEvent.

  Button, BitmapButton, ListBox:
* Move ::update_bounds logic to ::update and remove
::update_bounds.

* Use default UIWidget::on_update && UIWidget::on_size_changed
implementation.

* Button: Re-declare ::update under protected scope; BitmapButton
needs to update this widget in its update logic.

* BitmapButton, ListBox: Re-declare ::update under protected scope;
a future class can inherit off this widget and update it from
within its code.