This commit reworks how drop-shadows are handled. We now add two
primitives, each one referencing the same Picture.

The first primitive draws the drop shadow by blurring the alpha
channel of the picture, and generating screen-space UVs after
applying a local offset.

The second primitive draws the main image with a normal
brush_image shader blit.

There are a couple of hacky bits of code to make this work, but
it's such an improvement on the current state of drop-shadows
that I think it's worth getting this merged and tidying those
up later (mentioned as TODO comments in the patch).

Also, finally remove the hardware composite shader, since this
removes the last use of it.

Fixes #2584.
Fixes #2374.