GlobalShortcuts: refactor
I consider this a prerequisite commit to improving the quality of touchpad gestures provided by KWin. In short, this breaks apart a weird all-in-one class into an std::variant for the different types of shortcuts in order to make it easier to add new types of global shortcuts. For the byte shavers, this roughly halves the size of the GlobalShortcut class as well. On top of all this, the code is about half the size it was before, mostly due to newer C++ concepts being used that allow us to let the compiler do more work for us.