compositor: Hide surfaces by setting surface->output to NULL

This way we can still use surface->link when a surface is not in
the main compositor surface list and don't need the hidden_surface
wrapper object.  Also, setting surface->output to NULL will block
the surface frame callback until we put the surface back into the
main list.  This has the effect of blocking animations while a surface
isn't visible.
diff --git a/compositor/compositor.c b/compositor/compositor.c
index 758a9f1..ae348eb 100644
--- a/compositor/compositor.c
+++ b/compositor/compositor.c
@@ -313,7 +313,7 @@
 {
 	struct wlsc_surface *below;
 
-	if (wl_list_empty(&surface->link))
+	if (surface->output == NULL)
 		return;
 
 	if (surface->link.next == &surface->compositor->surface_list)
@@ -369,6 +369,9 @@
 	int32_t sx, sy;
 	uint32_t time;
 
+	if (!compositor->focus)
+		return;
+
 	time = wlsc_compositor_get_time();
 	wl_list_for_each(device, &compositor->input_device_list, link) {
 		if (device->input_device.grab)