gl: Create EVAS_GL binding for cairo
gl: add missing GL functions in dispatch table

Add DepthMask and Viewport in dispatch table
boilerplate: Add boilerplate for evas-gl
gl: support multisampled_render_to_texture extensions

If a GLES supports either GL_EXT_multisampled_render_to_texture or
GL_IMG_multisampled_render_to_texture, cairo_surface_flush on a
gl surface should ask GL to resolve multisampling
gl: enable cairo_gl_surface to interact with external program

When using cairo GL/GLES backend with external GL, it is possible
in the following scenarios

1. App creates a texture, renders something into the texture and calls
   cairo_gl_surface_create_for_texture()
2. App creates a texture, calls cairo_gl_surface_create_for_texture(),
   then renders into the texture using cairo API.  Once finishes,
   app uses other means (e.g., GL) to draw more into the texture.

The correct usage of cairo GL backend for such is

Scenario 1:
1. App creates a texture,
2. App renders into texture
3. cairo_surface_t *surface = cairo_gl_surface_create_for_texture ();
4. cairo_surface_mark_dirty (surface); // this informs cairo that
                                       // the surface is dirty
5. cairo_.....();                      // draw something with cairo
6. cairo_surface_flush ();             // resolve multisampling if any

Scenario 2:
1. App creates a texture,
2. cairo_surface_t *surface = cairo_gl_surface_create_for_texture ();
3. cairo_..... ();                     // draw with cairo
4. cairo_surface_flush ();             // resolve multisampling if any
5. app_draw_using_gl();                // app draws into texture with
                                       // GL commands
6. cairo_surface_mark_dirty (surface); // tell cairo texture image has
                                       // changed
7. more_cairo_draws ();
gl: reset shader object when detecting context changes