Fixes the bug that scroller may not disappeared properly.

Originally the animation is controlled between `WidgetWillRender()` and `WidgetDidRender()` method. However, because caching is enabled for the `Scroller` class. The actual rendering is done before calling `WidgetWillRender()`, which causes the problem to render the scroller with wrong animation progress.

This commit changes to control animation between `WidgetViewWillRender()` and `WidgetViewDidRender()` methods. That guarantees the rendering is always done for the current animation progress. The `animation_progress_` property is also reset after animation finished.
Support for propagating event to responders.

This commit changes the mechanism of handling events. Originally there is only one responder that can handle received events. Now the received event can be propagated to the next responder as long as its `Widget::HandleEvent()` method returns `true`.

A new `WidgetView::UpdateEventResponders()` method is created for populating a list of responder candidates. `WidgetView::HandleEvent()` then iterates the candidates to handle received events.

Other widget classes such as `Control` and `ScrollView` are also updated to adapt the changes. In addition, the `Control` class starts ignoring events if its position is changed. This may happen when a `Control` widget is put inside a `ScrollView` widget.