Initial modular patch, from Bjorn.


[SVN r85884]
Undo previous commit, it was meant for another branch

[SVN r85888]
Remove obsolete MSVC check from pragma guard

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

is now clean.

[SVN r85952]