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.
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.