Remove unnecessary clipping of the rootPicture

rootPicture is not used until much later when the rootBuffer is copied
back in to it. At this point rootBuffer contains the same clipping
region so it is unnecessary to specify it on rootPicture as well.
If making a solid fill, use XRenderCreateSolidFill

This avoids the need for an intermediate pixmap, which simplifies the code.
Note the removal of XFreePixmap. This shouldn't have ben done on a pixmap
taken from atoms, which is now the only type of pixmap we deal with in this
function.
Repaint the screen when background changes.

add_repair() here looks like a mistake. We want to damage_screen()
so that the new background gets painted.
Ignore when root atoms are unset.

If the background root atom is unset, ignore it. The XRender picture
we have should still be valid.
Bring refresh_rate stuff outside of LIBDRM checks.

We want to know the refresh rate even if libdrm is not used.
Implement zooming.

This implements zooming when the compositor is enabled. To zoom in,
hold the key used to grab and move windows (usually alt) and scroll
up with the mouse wheel. Scroll down to zoom out.

This works by transforming the offscreen buffer where windows are
composited when rendering it back to the screen.
Fix compiler warnings.