shadow: add code to render blurred shadows
shadow: add code to render blurred shadows

Split out the blurred shadow rendering in three steps:
- creation of a surface of the appropriate size - we use the clip
  rectangle as a good measurement for the size, since we won't render
  out of it anyway
- painting the unblurred shape on the surface - this is responsibility
  of the single shadow implementations
- blur the surface and compose the result back on the original cairo_t

This means we can share code between the implementations for the first
and third steps; it also makes the code independent of the rendered
size, so we can avoid passing down a cairo_rectangle_t with e.g. the
icon coordinates.

davidt/gtk,alexlarsson/gtk,davidt/gtk,jessevdk/gtk,jessevdk/gtk,grubersjoe/adwaita,Sidnioulz/SandboxGtk,ebassi/gtk,ahodesuka/gtk,jessevdk/gtk,davidgumberg/gtk,ahodesuka/gtk,alexlarsson/gtk,bratsche/gtk-,jessevdk/gtk,chergert/gtk,ahodesuka/gtk,chergert/gtk,grubersjoe/adwaita,jadahl/gtk,bratsche/gtk-,Sidnioulz/SandboxGtk,ahodesuka/gtk,Distrotech/gtk2,Adamovskiy/gtk,ebassi/gtk,alexlarsson/gtk,chergert/gtk,Adamovskiy/gtk,jessevdk/gtk,Lyude/gtk-,Distrotech/gtk2,Adamovskiy/gtk,chergert/gtk,davidgumberg/gtk,Adamovskiy/gtk,Distrotech/gtk2,Sidnioulz/SandboxGtk,Lyude/gtk-,msteinert/gtk,bratsche/gtk-,davidt/gtk,grubersjoe/adwaita,grubersjoe/adwaita,chergert/gtk,davidt/gtk,msteinert/gtk,bratsche/gtk-,grubersjoe/adwaita,alexlarsson/gtk,Adamovskiy/gtk,Distrotech/gtk2,jigpu/gtk,ebassi/gtk,jadahl/gtk,msteinert/gtk,msteinert/gtk,Lyude/gtk-,Sidnioulz/SandboxGtk,chergert/gtk,davidgumberg/gtk,jadahl/gtk,Lyude/gtk-,ahodesuka/gtk,jigpu/gtk,Adamovskiy/gtk,jadahl/gtk,Lyude/gtk-,chergert/gtk,bratsche/gtk-,alexlarsson/gtk,ebassi/gtk,ahodesuka/gtk,Lyude/gtk-,alexlarsson/gtk,Lyude/gtk-,davidgumberg/gtk,jadahl/gtk,davidgumberg/gtk,jessevdk/gtk,Adamovskiy/gtk,Sidnioulz/SandboxGtk,bratsche/gtk-,Adamovskiy/gtk,grubersjoe/adwaita,jigpu/gtk,jessevdk/gtk,Sidnioulz/SandboxGtk,jigpu/gtk,alexlarsson/gtk,jigpu/gtk,Distrotech/gtk2,ahodesuka/gtk,msteinert/gtk,chergert/gtk,ahodesuka/gtk,jadahl/gtk,davidgumberg/gtk,davidgumberg/gtk,jigpu/gtk,jadahl/gtk,ebassi/gtk,grubersjoe/adwaita,davidgumberg/gtk,grubersjoe/adwaita,Lyude/gtk-,davidt/gtk,jigpu/gtk,jadahl/gtk,msteinert/gtk,davidt/gtk,Distrotech/gtk2,alexlarsson/gtk,jigpu/gtk,ebassi/gtk