Use wlr-foreign-toplevel-management instead of private protocol

Introduces PhoshToplevelManager and PhoshToplevel classes for
managing and representing toplevel surfaces.

Thanks to that:
 - it doesn't match the window to close via its title or app id,
   always trying to close the correct window instead
 - it removes the window from the overview only after it really got
   closed - which is especially noticable in case of windows that
   refuse to be closed
 - it updates the list automatically as the changes happen, without
   having to close and open the overview back again

Closes #37
5 jobs for wlr-foreign-toplevel-management-rebased in 6 minutes and 40 seconds
latest
Status Job ID Name Coverage
  Build
passed #102908
librem5
build:native

00:01:40

 
  Test
passed #102909
librem5
test:native

00:01:19

passed #102910
librem5
test:smoke:one-output

00:02:10

passed #102911
librem5
test:smoke:two-outputs

00:02:20

 
  Package
passed #102912
librem5
package:deb

00:01:18