wayland/surface: Add support for wp_viewporter

This adds the required bits to wayland surfaces and ties them up
to the compositor parts.

It is based on and very similar in nature to buffer transforms.

From the specification:
> The global interface exposing surface cropping and scaling
> capabilities is used to instantiate an interface extension for a
> wl_surface object. This extended interface will then allow cropping
> and scaling the surface contents, effectively disconnecting the
> direct relationship between the buffer and the surface size.

!323
2 jobs for master in 3 minutes and 36 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Build
passed #207647
build-mutter

00:01:14

 
  Test
passed #207648
test-mutter

00:02:21