Add compositor wl shell

This PR adds a preliminary implementation of the `wl_shell`.
Nope, the architecture doesn't suck that much. All our modules are pretty much self contained. The only thing that will be pulled in from a lot of modules is in `util`, `objects` and `values`.

However, you _can_ make thinks cleaner by using forward declarations. I pay attention to header's footprints, even if they are small. That's why I do forward declarations.