Implements the mechaism of rendering a control.

The Control class now takes control of how to render the appearance of different control states in Render() and which is not allowed to overwrite in subclasses anymore. Because of this, Control objects are required to bind a function for rendering a specific control state through BindRenderFunction().

Basically, no render function is required for any state. However, if there is no render function for the normal state, whilte background will be filled automatically, and if there is no render function for the selected state, the normal state will be rendered instead.

The Control class also renders default look for highlgihted and disabled states automatically based on normal and selected states if the corresponded render function is not binded. For disabled state, an alpha value will simply be applied. For highlighted state, the transparent black foreground will be added.

The code for generating the default look of highlighted state is implemented in GenerateDefaultHighlightedImage(). It renders the highlighted image offscreen through FBO. To do so, some new custom functions are implmeneted in `nanovg_hook.cc` to expand the nanovg APIs.