Add compositor wl shell

This PR adds a preliminary implementation of the `wl_shell`.
Yes, and if the architecture would be a bit more distributed in manner of type declarations, we may would end up pulling in less lines here. I do not say "your code sucks" here, but I say "our code _architecture_ sucks" here.