xdg-shell: split last-acked and current state
These states are distinct in the time period between the ack_configure and the next commit on the surface. Splitting these states avoids the following race for example:
- client starts at 1000x1000
- wlr_xdg_toplevel_set_size 500x500
- size is different -> configure sent
- client acks the configure
- wlr_xdg_toplevel_set_size 1000x1000
- compare_xdg_toplevel_state returns true since there is no pending configure and the currently committed size is still 1000x1000
- no new configure is sent
- client commits at the size it last acked, 500x500
For reference, this is the cause of https://github.com/ifreund/river/issues/31
Closes #762 (closed)