Support for binding render function to widgets.

Originally only the `Button` class can bind render functions for rendering the appearances without the need of implementing a subclass. This commit adds this feature to the `Widget` class as well. Besides, the `rendering_offset` property is moved from the `Button` class to the `Widget` class so every widget can take
advantage of this property.

To implement this feature, a new `Widget::ExecuteRenderFunction()` method is created to decide either the binded render function or the `Render()` method should be executed. It also takes the `Widget::RenderBackgroundColor()` method's job to fill background color.

In addition, the `Widget::set_background_color()` method is changed to accept the `NVGcolor` type directly, just like every other widget.