xdg_shell: Adding a new shell protocol.

xdg_shell is a protocol aimed to substitute wl_shell in the long term,
but will not be part of the wayland core protocol. It starts as a
non-stable API, aimed to be used as a development place at first, and
once features are defined as required by several desktop shells, we can
finally make it stable.

It provides mainly two new interfaces: xdg_surface and xdg_popup.

The xdg_surface interface implements a desktop-style window, that can be
moved, resized, maximized, etc. It provides a request for creating
child/parent relationship, called xdg_surface.set_transient_for.

The xdg_popup interface implements a desktop-style popup/menu. A
xdg_popup is always transient for another surface, and also has implicit
grab.
shell: Remove SHELL_SURFACE_FULLSCREEN and SHELL_SURFACE_MAXIMIZED.

These surface types don't exist anymore inside weston desktop shell
implementation. They are just exposed as wl_shell surface types, but
internally the implementation is done with surface states.

The previous
behavior (setting a surface type unsets another one) still happens when
using wl_shell. This change is mainly done as a refactory to allow
xdg-shell to use the same code.
shell: Change set_maximized to receive internal structures.

Change the parameters of set_maximized from wl_resource and wl_client to
shell_surface and weston_output. This will allow it to be used with
xdg-shell too.
xdg-shell: Implement part of the interface.

Basic requests are implemented, enough to get a surface displayed.
xdg-shell: Implementing maximized and fullscreen states.
xdg-shell: Implement set_transient_for request.

The implementation just sets a parent/child relationship between the
xdg_surface and its parent, passed as argument of this request. Stacking
might be affected (that's up to the compositor).

This implementation does not affect the code that handles the previous
transient surface type. It should still work as expected, but it's not
possible to set that surface type to a xdg_surface.
xdg-shell: Implement xdg_popup.
xdg-shell: Add surface size to configure.

Also emit configure on unset_maximized and unset_fullscreen.
xdg-shell: xdg_surface_set_output should only affect fullscreen.
westoy: Schedule a full resize when we add a subsurface

If a client adds a subsurface, we need to make sure it's allocated
properly, so queue a resize and redraw on the parent window.
westoy: Use subsurfaces for tooltips instead of transient windows

Transient windows, at least not as they are today, don't exist in
xdg_shell. Subsurfaces allow for specially placed surfaces relative
to a window, so use these instead.
westoy: Remove fullscreen methods

These aren't supported under xdg_shell, at least not right now.
If xdg_shell ever gets support for them, we can revert this commit
and adapt it.
westoy: Remove MAXIMIZED and FULLSCREEN as separate window types

xdg_shell changes this around so that they are flags on the remote
object itself, not separate surface types. Move to a system where
we calculate the state from the flags ourselves and set the appropriate
wl_shell_surface type.

When we port to xdg_shell, we'll drop these flags and simply sync
on the client.
westoy: Port the toy toolkit over to xdg-shell
xdg-shell: Use xdg-shell in simple-shm.