MSVC doesn't know about #warning
_byteswap_xxx is defined in stdlib.h
isprint() needs ctype.h on MSVC
DECLARE_SINGLETON already puts its argument into namespace Common

Doing it twice raises an error on MSVC (declaring an object outside
the "current" namespace, which ends up being Common::Common)
Some disambiguation fixes that trip MSVC

MSVC doesn't do implicit conversions from int to float/double,
for example
Some more MSVC peculiarity