Add compositor wl shell

This PR adds a preliminary implementation of the `wl_shell`.
Because this header doesn't depend on a bunch of other headers this way.