Implement graphics abstraction layer.
This is in preparation for adding support for Wayland.
This patch introduces an abstraction layer to make it easy to add support for different platforms (X, Wayland, etc)
and do any specific optimizations as needed. Two new classes are added with this implementation,
GLPlatformContext and GLPlatformSurface.
GLPlatformContext encapsulates an OpenGL context hiding any platform specific management.
It uses GL extension ARB_robustness (when available) to detect driver resets.
It defines a simple interface for things that need to be handled by the context.
GLPlatformSurface encapsulates an OpenGL drawable hiding any platform specific management.
It defines a simple interface for things that need to be handled by the surface.
Relevant changes in SharedPlatformSurfaceTizen, VideoSurface, etc. would be done in
followup patches.