fix missing operator== by using a member predicate instead

On at least one compiler (g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)), including catch.hpp yields multiple `no match for ‘operator==’ in ‘__first.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = Catch::Ptr<Catch::CumulativeReporterBase::SectionNode>*, _Container = std::vector<Catch::Ptr<Catch::CumulativeReporterBase::SectionNode>, std::allocator<Catch::Ptr<Catch::CumulativeReporterBase::SectionNode> > >]() == __val’`. This commit fixes the issue by replacing the friend comparison operator with a functor.