Bulk update of 64 bit detection

in gcc it's __x86_64__ but in msvc it's _M_X64
clang likes to copy everybody else so it'll do one on nix
and one on windows
Additional intrinsics and some more defines

noexcept and constexpr lack of support mean define madness
currently what is compiling without issues
some prefixed include define blocks

for byteswap and c++config.h
Merge branch 'cmake_build' into win32_portability