wayland: Refactor SurfaceRole
After introducing SurfaceExtension, SurfaceRole has lost its commit() function. It serves informative purpose now only.
Shell surface implementations don't have to inherit from SurfaceRole.
By making SurfaceRole act more like a value type, it's possible to fix role handling in wl_pointer.set_cursor.