[WIP] Add shell compositing

This Pull Requests adds a few missing abstraction layers between a surface, its shell, a monitor and the buffers below it.

This is basically all just one feature, make compositing easy.
Maybe an `unsigend int` would be better here, wouldn't it? Assuming you _always_ will have not more than two buffers, you could use a `uint8_t` here, so we do not waste memory.

Maybe even `int_fast8_t` can be used here... to optimize things a bit...