noexcept changes

noexcept gets two macros, one for noexcept(value) and one for regular
noexcept - both are replaced with throw() which isn't an exact
replacement but should be "good enough"
the noexcept workaround is throw

so we need to remove this "protect you from yourself" hack
Additional uses of noexcept added
Fix includes

make sure portability.h is always included and wrap up bits/c++config.h
include in proper macro check
Missing includes

add missing exception to functional except and include vector
use windows apis for fetching sysinfo
Merge branch 'fix_includes' into windows_build
Conflicts