UIWidget: Change input handler method's argument to Event&

* This will improve performance considerably as we do not
need to do a memory allocation every time an input event is
matched within ::process_event.
  The changes also separate the intentions of UIEvent & Event
better -- the latter being system event messages, whereas UIEvent
is intended for high-level actions, generally associated with
widget data.
Refactor NOM_CONNECT macros

Hide the usage of UIEvent pointers internally so we can treat
UIEvent deriving widget events as object references.

* Rename NOM_CONNECT_UIEVENT macro to NOM_CONNECT_UIWIDGET_EVENT.
* Introduce NOM_CONNECT_RESIZE_EVENT macro.
* Introduce NOM_CONNECT_UIWIDGET_TREE_EVENT macro.
DataViewList: Misc API clean up

* Rename IDataViewItem to DataViewItem.

* UIWidgetTreeEvent now inherits from UIEvent.

* UIWidgetTreeEvent: Introduce column getter & setter.

* Integrate usage of UIWidgetTreeEvent in DataViewList.
Remove second argument from UIEventDispatcher::emit

This argument was unnecessary duplication, and led to a confusing
API.

* Add const keyword to IUIEventListener, IUIEventDispatcher abstract
interface and consequently concrete implementation classes.

* Remove UIWidgetEvent constructors (other than default ctor); it is
intended to use the setters in the class for construction, like a
struct.

* UIWidgetTreeEvent: Initialize column to -1 in default ctor.