This patch moves the dirty rect storage from ImageResource to
CachedImageInfo. This is because cache entries may be updated
independently across frame updates, and thus cannot share the dirty rect
state.

We no longer clear the dirty rect when we get an update without a dirty
rect. This is because we can get a subsequent update (before applying
the previous) which provides a new dirty rect, and we still want to
reupload the whole image. Instead we now store a dirty rect for the
whole descriptor.

In addition to special handling for tiled requests, we also properly
handle requests which change the ImageRendering type. Before we would
take the dirty rect for the first request and ignore it for the rest.