GPU optimizations for partial surface update
This aims to reduce the amount of pixels redrawn on the screen (and therefore power consumption) in the following cases:
- The application submitted two different damage areas in a single frame that are sufficiently far apart to result in a substantially larger redraw area than actually needed
- The application submitted a damage area that is partially occluded by another surface
See individual commits for more details.