Port remaining compositor back ends to plain C
This patch set ports the XCB and NVIDIA/RandR direct mode back end to plain C. For this not many changes were required as the code was mostly C anyway. This patch set makes the compositor a consistent C only target.
With this some structural improvements were made to the direct mode back end, like extracting parts of the code to functions and adding new error messages encountered on NVIDIA Optimus.
In addition I have now enabled pedantic warnings on C++ since the said back ends introduced verbose pedantic warnings for the C++ compiler, while they don't with C.
The branch was successfully tested on NVIDIA and AMD by @haagch and myself. I didn't manage to get NVIDIA Optimus to work in direct mode, which is the same behavior as on master, but my desktop GTX 1050 runs without issues.