Add surface creation

This PR introduces a preliminary method of creating a surface and attaching it to each monitor present.
Yep, look at the implementation and you'll know why.