Notifications

Notifications are now real windows and we use a protocol to
communicate with the compositor which will set their position
according to the configuration.

Issue: #6
Fix typo that prevents panel from being displayed

ShellUi::panelWindow() returned the background window so we never
actually made the panel visible.
AppChooser is not modal anymore

Remove modality flag so that AppChooser won't block input on other
windows making interacting with the launcher possible, in order to
launch applications or click the button to hide AppChooser.
Calculate available geometry

Evey time the screen geometry changes we recalculate the available
geometry which will be used by shell components such as AppChooser.
Rename desktop shell protocol file

Rename to a more appropriate name.
Request to change surface position

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.
Rename interface to hawaii_desktop_shell

Avoid confusion with Weston's desktop_shell interface.
Component for notification bubbles

Notifications bubbles now use a NotificationWindow component which
is a QQuickWindow subclass that sets the surface format and has a
public slot that sends the wl_notification_daemon_add_surface
request to the compositor.

Here's how notifications work:

NotificationDaemon implements the XDG specification, it receives
a request to show a notfication bubble via DBus and checks if
the notification was already created (in this case it updates
the body). If it's not, it creates a NotificationItem and shows
it.

After a notification bubble is shown, we process the events to let
the wayland QPA plugin create the buffer and attach the surface.
After that we send the wl_notification_daemon_add_surface request
to the compositor which properly set the position.

Issue: #6
Implement indicator menus with ShellWindow

Indicator menus use now ShellWindow which is a component that
will send a set_position request to the compositor in order to
force its position.

Issue: #7