Add compositor surface

This PR adds a preliminary implementation for the `wl_surface` interface.
Can you please align these lines, so that the `=`s are one the same column? Improves readability _a lot_.