Move and resize surfaces

When panel or launcher changes geometry we react by resizing and moving
the surface.
React to background changes with animations

We create a rectangle for solid background, one for gradients and an
image for wallpapers and when the background is changed we fade between
the previous background and the new one.

In case an invalid background is chosen (i.e. editing by hand the
configuration file writing an invalid value) the background goes black.
One QML file to load all shell windows

Shell UI code is now more readable, we have one QML file that loads
all the windows for each output. From C++ we set the surface format,
flags and other things.