gl: use reduced width and height for shadow surface

Instead of using scratch surface width and height, we compute scaled
width and height when generating cached shadow surface for GL backend
shadow: initial support for shadow spread

we add a new API - cairo_set_draw_shadow_only () allows app to specify
whether to draw shadowed image only without draw the original image.
This facilitates app to show box-shadow with spread.  To draw box-shadow
with spread, the app first construct a rectangle with spread,
call cairo_set_draw_shadow_only (), then draw the original rectangle
without shadow
image: fix a memory leak in get shadow surface
gl: set filter to CAIRO_FILTER_GOOD during gaussian blur

This reduces performance a little, but increase image quality
shadow: fix small typo in getting shadow surface in image backend
gl: add inset shadow in fill ()
gl: inset shadow for stroke