pattern: limit max blur size
gl:  setting scratch surface for shadow differently

setting width and height of the shadow scratch surface differently instead
of using same size can sometime save memory, but at risk of re-generating
it
shadow: limit max blur
gl: set max scratch size to 1024

when blur radius is small and the image is big, use small scratch reduces
blurred image quality
shadow: compute accurate bounding for stroke

When line join in stroke is CAIRO_LINE_JOIN_MITER, compute approximate
bounding box is vastly over estimated.  This over estimate result in much
bigger surface required for scratch shadow surface.