New properties are added to EventData for Supervisor events:
* Widget: a reference to the widget which is receiving the event.
* Clicked (bool): for MouseMove events records if the primary button is pressed.
* func RelativePoint(): returns a version of EventData.Point adjusted to be
relative to the Widget (0,0 at the Widget's absolute position on screen).
Other changes:
* Destroy() method for the Widget interface: widgets that need to free up resources
on teardown should define this, the BaseWidget provides a no-op implementation.
* Window.Resize() will properly resize a Window.
* Window.Center(w, h int) to easily center a window on screen.
* Added the TabFrame widget with an example program and screenshot
* Button: FixedColor=true to set a consistent background color and not
worry about it with mouseover/down events.
* Adds Window Manager support to the Supervisor, so that Window widgets
can be dragged by their title bar, clicked to focus, etc.
* Create a ui.Window as normal, but instead of Packing or Placing it
into a parent container as before, you call .Supervise() and give it
your Supervisor. The window registers itself to be managed and drawn
by the Supervisor itself.
* Supervisor manages the focused window order using a doubly linked
list. When a window takes focus it moves to the top of the list.
Widgets in the active window take event priority.
* Extended DragDrop API to support holding a widget pointer in the drag
operation.
* Changed widget event Handle functions to return an error: so that they
could return ErrStopPropagation to prevent events going to more
widgets once handled (for important events).
Some bugs remain around overlapping windows and event propagation.