This patch does the following:
- Use override keyword for every IGUIObject function that is overriden, rather than only the one incidence in rP22596
- Make the empty HandleMessage function a pure virtual function, so that derived classes don't have to worry about when to call that.
- Move AddSetting calls from constructor to AddSettings and call them after the constructor. Required by 2., but also seemingly nice independent cleanup. This is required by 2. because the base class is constructed before the derived class, so every derived IGUIObject would still call the IGUIObject constructor without having overridden the pure virtual HandleMessage function with its implementation in the derived function. As it seems cleaner to define a pure virtual method, require the derived class to implement it, rather than require the derived class to consider when to call the inherited empty constructor that may contain something in the future, I have to propose this patch.