Window grouping improvement (#2159)
* app grouping rewrite (WIP)
* fix incorrect setting of group_object resulting in single instances of apps not being removed from tasklist
* fix raven failed assertion when client player attributes are null
* fixed issue with app with missing WM_CLASS grouping after they are renamed
- ensure thread safety for buttons add/remove operations
- move AbominationRunningApp and AbominationAppGroup into their own files
- deal with LibreOffice fuckages
- Ensure we can properly switch between grouped applications
- clean up (a bit) signal mess
* cleanup
- removed fixed FIXMEs
- continue effort to properly use this to faciliate identifying scope
- added new FIXMEs based on tests
- documented some edge cases
* make it so that Abomination running apps and groups cannot be instanciated outside of Abomination so that we're sure they are always tracked by our system
* fix some remaining scope issues
* make sure we control from where icon button can be removed
* removed a bunch of FIXMEs
* make sure our apps are grouped correctly no matter how they've been pinned
* one more pass of scope creep fixing
* properly use pinned button when opening first app without grouping and remove button once closed
* fixed button not being removed from tasklist when unpinned
* LibreOffice, can you bug consistently please?
* properly display running app indicator and fix middle click when opening a new app
* ensure that icons are properly updated and that app_info are up to date in IconButton
* did we really nuked the last LibreOffice related bugs? edit: nop, try again
* fix libreoffice impress new instance overriding existing group
* fix pin through drag&drop
* make sure window closed signal is sent before window opened signal
* don't animate icon when grouping is disabled
* fix icon not updating focus with grouping enabled
* revert Abomination file renaming
* review comments
* move public methods back to their original place
Co-authored-by: Julien Guillot <email address hidden>