compositor: q&d solution for surface drift

When a transformed (rotated) surface is continuously resized from its
top-left corner, its location will drift. This is due to accumulating
rounding errors in transforming an offset from surface-local to global
coordinates in surface_attach().

Diminish the drift down to unobservable level by changing the
weston_surface global position from integer to float.

The offset transformation is now done without rounding. To preserve the
precision, wl_shell::configure() interface must use floats, and so does
weston_surface_configure(), too.

The con of this patch is that it adds inconsistency to the surface
position coordinates: sometimes they are floats, sometimes integers.
diff --git a/src/shell.c b/src/shell.c
index d15c8e2..78120ef 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -1397,7 +1397,7 @@
 
 static void
 configure(struct weston_shell *base, struct weston_surface *surface,
-	  int32_t x, int32_t y, int32_t width, int32_t height)
+	  GLfloat x, GLfloat y, int32_t width, int32_t height)
 {
 	struct wl_shell *shell = container_of(base, struct wl_shell, shell);
 	int do_configure = !shell->locked;