This patch refactors Spectacle's platform backends.
The platform backends (esp. Xcb) is now more stateless. Additionally, the rectangular cropper is now taken out of the platform backends and is directly invoked by the core. This has the happy side effect of making it work on Wayland. The experience might be suboptimal on multi-screen setups, but it's better than nothing. The on-click mode is also now correctly locked out and force-enabled on KWinWayland, since KWin enforces making the user click when a screenshot is taken.
There's also some cleanups and coding style changes:
- New license header with a SPDX-License-Identifier (only files that I touched)
- New way to consistently name variables (locals prefixed with l, members with m and function arguments with the, and optional arguments suffixed with Opt and output reference arguments suffixed with Out). This is from the coding style guide of a certain large European enterprise software vendor (the entire style guide is internal and I can't make the whole thing public) and I find this makes navigating new codebases really easy because you immediately know the scope of a variable when you see the name.
- Bump C++ language requirements to C++14 and also bump CMake requirements to CMake 3.10.
- Use more stdlib than Qt stuff whenever possible, esp. smart pointers.