backends/drm: fix surface destruction
With value semantics, the destructor can be called more often than actually desired, so this commit ports the DrmEglLayerSurface to use unique pointers to store surface data instead
!4452 (merged) has introduced some issues that I didn't see in my first round of testing. This fixes them