Moved is_same implementation to detail (both directory and namespace)
to use in the public headers and avoid introducing new dependencies.
The documentation now recommends users to use Boost.TypeTraits or
C++ standard library instead.
Also, removed unnecessary includes and added missing ones in a few
places.
This definitions is mostly a workaround for older MSVC versions that only
provided non-portable _snprintf etc. that are not fully conforming to
the standard snprintf. This implementation fixes its issues wrt. null
termination and returned values in case of buffer overflows.
On platforms that support the standard snprintf, the definitions in
the header are equivalent to the standard functions.
The header defines boost::iterator template, which is an alias for
std::iterator, which is itself deprecated since C++17.
Updated test to avoid testing the definition in C++17 onwards
to avoid failures due to deprecation warnings from libc++-13.