Resolves the situation where FBO failed to create.

This commit updates the `Widget::BeginRenderbufferUpdates()` method to return the result of creating the framebuffer object. The `nanovg` submodule is also updated to fix the bug where framebuffer object and renderbuffer object are not restored properly if failed.

In addition, `Button::Render()`, `Button::UpdateFramebuffer()`, and `Widget::RenderDefaultFramebuffer()` methods are also updated to adapt this change.

The `nvgluBindFramebuffer()` prototype function is removed from `nanovg_hook.h` as well because it already fixed in the `nanovg` submodule .
Implmenets the LinearLayout widget.

This commit implements the `LinearLayout` widget that is used to arrange child widgets in either horizontal or vertical direction. The `Layout` class is created as the base class for implementing every particular layout. Besides, it's inherited from the `ScrollView` class, so if its child widgets occupy larger space than the layout itself, the layout becomes scrollable.

In addition to the layout classes. The `ScrollView` class is also changed to better integrate with layouts. Originally, the parent widget of widgets added to a scroll view or layout is the `ScrollView`'s `content_view_`. Now their parent is set to the scroll view or layout widget directly. `ScrollView::GetContentViewSize()` is also implemented for the `LinearLayout` class.