Support for determining which device category the app is currently running on.

This commit implements the new Platform class for providing various platform information.

Currently it only supports determining which device category the app is currently running on. For Mac, it's clearly desktop. For iPhone and iPad, it's phone and tablet respectively.

For android devices, the smallest screen width dp is used to determine whether the device is a tablet or a phone. The default value is 600 dp. However, it can be changed through the SetSmallestScreenWidthDpForTablet() method depending on the needs.

Signed-off-by: Olli Wang <olliwang@ollix.com>
Changes the way of getting the main window.

For Android and iOS, the main window now is always retrieved dynamically through platform-specific API, never registered as the main window the first time retrieved. This guarantees the latest main window will be returned.

For Mac, the API has slightly changed. In order to return std::unique_ptr<Window> type for the Window::GetMainWindow() method. Now the main native handle is registered instead of the Window instance.

Signed-off-by: Olli Wang <olliwang@ollix.com>