compositor: gather buffer_transform and _scale into a struct

Gather the variables affecting the coordinate transformations between
buffer and local coordinates into a new struct weston_buffer_viewport.

This will be more useful later, when the crop & scale extension is
implemented.
diff --git a/src/shell.c b/src/shell.c
index 2084ed6..605f090 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -2333,11 +2333,11 @@
 	case WL_SHELL_SURFACE_FULLSCREEN_METHOD_DRIVER:
 		if (shell_surface_is_top_fullscreen(shsurf)) {
 			struct weston_mode mode = {0,
-				surf_width * surface->buffer_scale,
-				surf_height * surface->buffer_scale,
+				surf_width * surface->buffer_viewport.scale,
+				surf_height * surface->buffer_viewport.scale,
 				shsurf->fullscreen.framerate};
 
-			if (weston_output_switch_mode(output, &mode, surface->buffer_scale,
+			if (weston_output_switch_mode(output, &mode, surface->buffer_viewport.scale,
 					WESTON_MODE_SWITCH_SET_TEMPORARY) == 0) {
 				weston_view_set_position(shsurf->view,
 							 output->x - surf_x,