CMakeLists: Only run MSVC specific commands if MSVC is defined.
CMakeLists: Force warning level to W4 (defaulted to W3 before).
Assert.h: properly detect debug builds on every platform
Assert.h: fix compilation error when used without format arguments