Implement output transformations.

This patch allows rotation and mirroring outputs for x11 and drm backends.
A new 'transform' key can be set in the [output] section. From the protocol:

"The flipped values correspond to an initial flip around a vertical axis
followed by rotation."

The transform key can be one of the following 8 strings:

normal
90
180
270
flipped
flipped-90
flipped-180
flipped-270
diff --git a/src/compositor.h b/src/compositor.h
index b8e767d..ac887ee 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -155,7 +155,8 @@
 	struct weston_compositor *compositor;
 	struct weston_matrix matrix;
 	struct wl_list animation_list;
-	int32_t x, y, mm_width, mm_height;
+	int32_t x, y, width, height;
+	int32_t mm_width, mm_height;
 	struct weston_border border;
 	pixman_region32_t region;
 	pixman_region32_t previous_damage;
@@ -678,7 +679,7 @@
 weston_output_move(struct weston_output *output, int x, int y);
 void
 weston_output_init(struct weston_output *output, struct weston_compositor *c,
-		   int x, int y, int width, int height);
+		   int x, int y, int width, int height, uint32_t transform);
 void
 weston_output_destroy(struct weston_output *output);