protocol: introduce wl_shell_surface
protocol: introduce wl_shell_surface

Requests like 'move' and 'set_toplevel' are really methods of a surface,
not methods of a global shell object. Move all these methods to a new
interface, wl_shell_surface.

The global object wl_shell will contain only 'get_shell_surface'
request, which creates and associates a wl_shell_surface object to a
given wl_surface object.

This will also give the shell plugin (if you look at the demo
compositor) means to store per-surface private data in a natural way.

Due to a limitation in delete_id event handling on client side, the
client must destroy its wl_shell_surface object before destroying the
wl_surface object. Otherwise it may just leak an id.

Signed-off-by: Pekka Paalanen <6c0263d81461c956d504307112a4ce25eaacc3d1@gmail.com>

eyolfson/wayland,tulcod/wayland,sir-murray/wayland,tulcod/wayland,abooij/wayland,eyolfson/wayland,bitfactor/wayland,abooij/wayland,bitfactor/wayland,bitfactor/wayland,tulcod/wayland,mchalupa/wayland,sir-murray/wayland,abooij/wayland,mchalupa/wayland,eyolfson/wayland,mchalupa/wayland,sir-murray/wayland