Configure shell surfaces without unmapping previously created surfaces

The configure_shell_surface() procedure is basically Weston's
configure_static_surface() which was designed to unmap previously
created surfaces in a given surface layer.

In case the shell crashes you need a way to unmap the old
surfaces but this had the side effect of removing
desktop-shell: handle multiple popups

This patch implements a popup stack. When the first popup is opened
the grab is started, and it is added to a list. Further popups will
be added to this list but the grab won't change. When a popup is
closed it is removed from the list and, if it is now empty, the grab
is ended.
A click outside the client area will send the popup_done event to
all the popups in the list, and the grab will end.
desktop-shell set the popup grab button as pressed only if it actually is

This ensures the popup_grab.initial_up field isn't reset to 0
if the popup was not opened because of a mouse press but because
of moving the mouse with a popup already open. Not doing so will
make the first click outside the client area go ignored.
desktop-shell: force position for shell toplevel surfaces

Some surfaces such as indicators' menus and AppChooser need to
force their position. This is not supported by Wayland, clients
create surfaces and only specify the size, hence we need a new
request to force the position.