Major overhaul of Widget system (still in progress). All Widgets now created through WidgetManager class. Widgets can be loaded either from XML or a Dictionary. WidgetManagers can create Widgets using a class name. Factories can be registered with a WidgetManager that will be called when a Widget is created from its class name. Widgets can be resized or repositioned, and will automatically update the position of their children. Getting the position of a Widget can cause the bounds of several Widgets to be recalculated before returning an answer, and thus the bounds of each Widget are always up-to-date when needed.