Development

Various GUI improvements
- Adds mViewport to guiTSControl in order to restrict render viewport to a sub-region of the control. This is particularly useful when using a guiTSControl as a container control, as it can restrict the render area to prevent overdraw or dedicate screen space to a panel"
- Adds event delegates to all controls to improve ability to write GUI code in C++
- Adds mDataString to base control so all control can carry custom data
- Adds code support for drag & drop
- Adds autosizing option to popup controls to improve default spacing (otherwise, dropdown panel can float far below the dropdown control itself)
- Adds optional frame panel rendering to tab controls
- Adds several new GUI controls:
  - GuiIconSpawnerButtonCtrl spawns drag & drop icons. This is similar to the palette control
  - GuiMapCtrl supports a large, pannable image (which I have used for game maps
  - GuiGridCtrl is somewhat like the array control, but transparently supports both square and hex based grids of icons of arbitrary dimensions. I use it with the GuiMapCtrl to create pannable world maps
  - GuiMoveableCtrl is a moveable control. It's based on GuiDragAndDrop, but does not duplicate controls (as GuiDragAndDrop does)
  - GuiUnorderedIconCollection is intended to hold a collection of moveable controls.
  - GuiDecoration provides image rendering without event handling
  - GuiIconControl is icon button that also displays its text label.
  - GuiIconListCtrl is like the GuiTextListCtrl, but for icons
  - GuiIconPopupCtrl is like GuiPopupCtrl, but for icons.