Add surface creation

This PR introduces a preliminary method of creating a surface and attaching it to each monitor present.
Btw: Now I know why you did it, because of the casting. But wouldn't it be more convenient to use `s` and `m` as parameter names instead?