Fix compilation of 3.0.x on modern Clang
This mostly backports patches from the master branch (a bit more than the recently landed ones, since many issues that have been made an error in modern Clang have been fixed earlier on the master branch when they only were warnings).
Additionally, I backport a bunch of patches to the old Qt 5.6 version, to make it build.
Some issues that have been made errors in modern Clang don't exist in that form in the master branch, and for some fixes (the spudec case), I preferred to make a small localized fix, when the upstream master branch fix came as part of much larger refactoring which probably won't be backported to 3.0.x. (If that needs to be backported and this becomes an issue, this local change is easy and unintrusive to revert though.)
Let me know if you want to split the MR into separate ones for each issue category (contrib backports from master, new contrib patches with Qt patches backported to Qt 5.6, main vlc code backported patches, and local non-backport fixes for main vlc code).