Fix mapped status tracking for subsurfaces
A subsurface should be considered mapped only if it has a buffer attached and its parent is also mapped.
Currently, mapped status logic in SurfaceInterface is somewhat broken for sub-surfaces. For example, the mapped() signal will be emitted even if the sub-surface should be considered unmapped according to the spec.
Draft as I need to verify that this doesn't break key kde apps (kmail) that are known for using subsurfaces. Plasma shouldn't be affected by QTBUG-52192.
Edited by Vlad Zahorodnii