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.
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.