NEW: convenience event methods to Widget
added isButtonDown/Up to check whether a button event happened on this widget

CHANGE: event handling
- If widget is disabled never process events
- If widget is enabled, process events even if they have been previously
processed.
- fix to event dispatching, to set correct widget ID and service type
CHANGE: Always mark event as processed when they go through a script ui event
handler.
CHANGE: skip child event processing and base class widget event processing if
event has already been handled.

This is done to avoid having the same event processed by a child widget having
a UI event handler, and then having the same event also dispatched to a
container ui event handler.