scene: Pad damage if surface scales doesn't match output scale
If the surface item's contents is scaled, i.e. its scale factor doesn't match the output's scale, GL_LINEAR will be applied to smooth the contents. The unfortunate thing is that it's possible some of the changed pixels will bleed to the neighbor ones.
In order to handle that scenario better, this change makes the SurfaceItem expand the damage if there's scale factor mismatch.
bufferSourceBox and bufferTransform properties were introduced to detect if the surface contents is going to be scaled. bufferSourceBox covers both crop transform from wp_viewport and scale factor from wl_surface. bufferTransform is same as wl_surface's buffer transform property.
See also https://gitlab.freedesktop.org/wayland/weston/-/issues/441