Stop MirSurface deleting itself, ensure SurfaceManager alone manages MirSurface lifetimes. Add SurfaceManager test suite.
This fixes bugs where a MirSurface would call deleteLater on itself, but SurfaceManager would have no idea and keep a pointer to that MirSurface in its internal list.
Instead SurfaceManager listens for signals from both miral and the MirSurface itself to decide when to delete it.
Add a test suite to verify MirSurface lifetimes. (LP: #1655644)
Approved by: Daniel d'Andrada, Unity8 CI Bot