CI: Windows: Bump warning level to /W3
MSVC has one good warning here that it seems the other compilers don't have, so it seems worth enabling to catch this (at least in code that MSVC can currently build): Taking a 32bit value, doing a bitshift, and then casting to 64bit (e.g. to store in a 64bit bitfield). GCC/Clang just go ahead and truncate the bitshift with no warning, even though you might be trying to shift by >32 and that'd just silently not work.
So, this MR contains fixes for that across lots of common code. It also has a few fixes for Windows-specific code that would've been caught if that code was cross-plat. Note I've only tried this for x64 which is what we build in CI.
Then the last patch adds a warning level increase to the Windows CI build.