cairo: initial support for shadow

Add cairo_set_shadow (), cairo_set_shadow_rgb/cairo_set_shadow_rgba
cairo_set_shadow_sigma. cairo gstate hold shadow information.

Because cairo does not have way to pass shadow to backend, I am using
source pattern to pass shadow information.  A more correct way is
to call cairo_surface_shadow_paint/mask/.... in gstate.  I will come
back fix that

Add shadow support for paint () for GL backend
gl: add shadow support in fill ()
gl: add shadow for stroke
gl: optimization for gaussian blur

1. make scratch surface as single sample to avoid blitting between
multisample renderbuffer and texture
2. make a y-axis pass using scratch texture
gl: use separate set of scratch surface for both source and mask blur
gl: bug fix for shadow
gl/msaa: proper destroy copied clip
gl: fix fragment shader when extend is CAIRO_EXTEND_NONE when using atlas
gl: save current draw/read surface to reduce _make_current
gl: save current drawable to reduce glXMakeCurrent
shadow: set scaling correctly for shadow parameters
gl: shadow for mask
gl: shadow for text
cairo: fix incorrect computation on coefficients when sigma is zero
gl: refactor gaussian filters in separate files

Add cairo-gl-filters.c for GL based 2-pass gaussian filter
image: split gaussian filter into 2 passes
image: implement shadow
image: use bilinear filters when enlarge blurred image
gl: clean up of the code
gl: remove clip copy in cairo_gl_context_t structure