Multi-output support for modal dialogs

To prevent users from interacting with screens where the dialog is
not shown we create a black translucent dialog from the compositor,
centers the actual dialog surface on its output and stack it above
the black surface.

The shell styles only the dialog borders and background, it's not
responsible for the modal overlay anymore.

Dialogs and their modal overlays are added to a dialogs layer on top
of everything except the lock surface layer.

Closes #30