Initial modular patch, from Bjorn.
Undo previous commit, it was meant for another branch
Remove obsolete MSVC check from pragma guard

 git grep -h -B1 "^#\s*pragma once" | grep -v pragma | sort | uniq

is now clean.