Improves the rendering mechanism to avoid unnecessary redraws.

This commit improves the rendering mechanism to avoid unnecessary redraws. This is achieved by defining a preparing-for-rendering state in the `WidgetView::Render()` method. `Widget::Redraw()` called in that state will not actually issue another redraw request. Instead, it implements a loop to check the `requests_redraw_` property that decides when to end the loop.

However, this method does not work when the widget view is animating. To remedy this situation, the `Widget::WidgetViewWillRender()` is updated to accept a boolean value as the return value that indicates whether the widget is ready to render. If `false`, the corresponded widget view will iterate all of this widget's children to call their `WidgetViewWillRender()` method repeatedly until the widget returns `true`.

To make sure an OpenGL view in iOS is always rendered the first time appeared to the screen. The `MOOpenGLViewController`'s `viewWillAppear:` method is updated to call the `render` method directly.