Updates nanovg and some code to adapt the changes.

Updates the nanovg repository and updates some code to adapt the changes.

This commit also creates a new "nanovg_hook.cc" file for loading nanovg implementation once to avoid "duplicate symbols" or "undefined symbols" errors. All other modules should include only the "nanovg_hook.h" header file to use nanovg features.

Signed-off-by: Olli Wang <olliwang@ollix.com>
Changes the API of retrieving system directories.

The API has been changed to match the style of iOS SDK for flexibility.

A new MOUI_APPLE constant identifier is also added to simplify the code of (MOUI_IOS || MOUI_MAC).
Support of handling basic events and touch control events.

This commit adds the ability to handle four basic events (down, up, move, and cancel) for all of iOS, Mac, and Android platforms. The design of handling events takes advantage of all these platforms as well.

Like the pointInside:withEvent: method from iOS' UIView class, the WidgetView class now has a new ShouldHandleEvent() method that decides whether the widget view should respond to the following events.

Like the onTouchEvent() method from Android, all events are dispatched to a single method for processing. The method in moui is named HandleEvent() in both WidgetView and Widget classes.

A new Control class is also implemented to handle control events. This commit only implements some touch events but other control events can be added later. The Control class mimics the UIControl class from iOS SDK and is designed as a base class for all control widgets.