This commit introduces the skeleton needed to implement reusable
operating system compatibility modules. This skeleton can then be
extended with the actual compatibility modules that work around
operating system specifics.
For example this will be used to be able to compile files that use
alloca on Windows. Also it can be used to implement replacements for
functions that are missing on some systems.