Some system headers on POSIX systems indirectly include strings.h in extern "C"
region. This sometimes results in Boost.Build's strings.h being included into
such region, which marks all string_* functions as extern "C" and changes their
name mangling rules accordingly, which causes linking errors. To resolve this
header conflict, this commit renames strings.h to jam_strings.h. And strings.cpp
to jam_strings.cpp for consistency.
Fixes https://github.com/boostorg/build/issues/468.
When running in Linux containers the POSIX sysconf can return "too many"
cores or cpus. Instead we prefer using Linux specific sched_getaffinity
there.
This adds a `b2::system_info` class to obtain available information on
system we are running in. Currently provides CPU counts.
And currently only implemented for macOS.