Fix an invalidation bug and improve display list correlation.
Fixes a subtle bug which could break the invalidation logic in some cases. If the content of a tile changed while that tile was not visible, the content change would be detected correctly. However, that changed flag would not be propagated to the is_valid flag, since it's skipped by the culling check. Instead, ensure that the content change invalidates the tile even if it's off-screen for now.
Improve the display list correlation code.
Previously, the code was picking a specific number of primitives, and trying to correlate them, even if they are instanced in multiple places on the page. It's far more reliable to instead only select unique primitives (uids that only occur once) and use these for correlation display list offsets. This seems to give perfectly accurate results in every page I tested (there are probably some edge cases that can still break this logic though, to follow up on as we find them).