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
wip