gl: regenerate scratch surfaces if existing scratch surfaces are too large

Because we apply filters on the whole scratch surfaces.  If the scratch
surfaces are too large and we only need a small portion of them, we
waste time on filtering the large unused portion.

This can be made more efficient we remove existing large scratch surfaces,
and regenerated smaller ones
gl: add shadow cache for fill and stroke
shadow: set shadow cache to 4M
shadow: add cairo_shadow_enable_cache () API

cairo_shadow_enable_cache() allows application to indicate whether
it wants to cache the generated shadow image or not.
shadow: add shadow caching for paint
shadow: add shadow caching for mask
shadow: do not use translation when generate pattern hash
gl/msaa:  reduce clip complexity when converting clip to traps

We draw clips during paint and mask operations in msaa compositor.
clip can be larger than source or mask pattern.  We intersect clip
with source and mask pattern to reduce clip complexity and such reduce
time to tessellate the clip when operator is CAIRO_OPERATOR_OVER
shadow:  do not cache shadow if paint or mask is not bounded
shadow: add shadow caching support for image backend
shadow: limit shadow surface for image backend
shadow: use app's antialis setting in shadowing
gl: remove force_no_msaa to increase shadow quality
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