shell: unsnap window when moving it in maximized state

Hi Scott,

This is unsnap maximized window functionality.

All the unsnap behaviour is implemented in shell_surface_configure, as it was the only place I could figure out, that will not cause flickering of the surface. 

It basically works like that:
1. shell: detect move of maximized surface, set surface->next_type to TOPLEVEL
2. shell: ask client to unmaximize 
3. client: resize surface to its original width/height
4: shell: move surface so that its grab point is in the top middle part of the surface using new dimensions provided by the client. Discard saved x, y (saved_position_valid = false)