[wayland] Implement window geometry more properly
So far the window geometry from xdg-shell wasn't implemented as it should
be. A toplevel must have two geometries assigned to it - frame and buffer.
The frame geometry describes bounds of the client excluding server-side
and client-side drop-shadows. The buffer geometry specifies rectangle on
the screen occupied by the main surface.
State and geometry handling in XdgShellClient is still a bit broken. This
change doesn't intend to fix that, it must be done in another patch asap.
Test Plan: New tests pass.
Reviewers: KWin, davidedmundson
Reviewed By: KWin, davidedmundson
Subscribers: davidedmundson, romangg, kwin
Maniphest Tasks: T10867
Differential Revision: https://phabricator.kde.org/D24455