Draft: protocol: add wl_surface.scale_factor
This adds the ability for clients and compositors to communicate non-integer scale factors, and is backwards-compatible with output scale.
Parents and sub-surfaces must always share the same scale factor. Since sub-surfaces are positioned in the parent's surface space, and root surfaces are positioned in the compositor space, this aligns sub-surfaces with each other and, if properly scaled, with hardware pixels.