Change drop-shadows to be drawn via a single primitive.
Previously, drop-shadows were a Picture, with two brush image primitives, each referencing the picture (one for the content, one for the shadow with an offset). Although conceptually reasonable, this exposes some problems with the way the current prim_store visibility pass works. Specifically, we can end up processing the picture more than once. In general this is an inefficiency but doesn't affect correctness, but it breaks some assumptions once the content of the drop-shadow element is an item in the render task cache. In the future, this problem should disappear as we refactor how the visibility pass operates, but for now the simplest solution is to draw the drop-shadow with a single primitive. To make this work, there are a couple of hacks in this patch, which push an extra brush image primitive into the GPU cache data. The drop shadows still have an issue with the shadow disappearing if the content of the drop shadow is off-screen, however this is no worse than the existing code. Doing it this way actually makes it easier to fix this is the future too.