Clang defines __GNUC__ to 4, as that represents its level of
support for the GNU C dialect. The gcc compiler does not provide
a macro indicating the compiler separately from the dialect supported.
We must therefore use the __clang__ macro to avoid false positives.
since we still support g++-7, where filesystem is marked experimental,
we introduce a wrapper header and expose the namespace to use
as Opm::filesystem.
for gcc we unconditionally link with libstdc++fs in the python bindings.
the setup.py stuff links as c code, not c++ code, so it is not
automatically added on any gcc version. this might prove unportable
later.