Add compositor wl shell

This PR adds a preliminary implementation of the `wl_shell`.
Nope, we need > 100 lines of header code because we have a 27-line-license-header, 5 lines for include guards, and at least 7 lines (most of the time it's more than 10) for each function declaration.

Plus, if you include a lot of headers in one header, how many lines of hoeader code do you think you end up pulling in? All of the headers you include include headers themselfes.