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.