Support for offscreen rendering and caching rendering result.

The Widget class now has the ability to cache the rendering result of `Render()` automatically and provides an opportunity for subclasses to do offscreen rendering.

To adapt the changes, `WidgetView::Render()` calls `Widget::RenderOffscreen()` and `Widget::RenderDefaultFramebuffer()` before actually rendering on screen. And the `Widget::Render()` call has been replaced with the new `Widget::RenderOnDemand()` to render on-screen stuff with or without caching depending on configuration.

The caching mechanism can be enabled when initializing a Widget object. However, this value cannot be changed once set. Whether to enable it should be considered when designing the rendering mechanism of subclasses.

The Control class also takes advantage of the new `Widget::RenderOffscreen()` to cache rendering results of every possible state.