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<_Iterat
	or, _Container>::operator* [with _Iterator = Catch::Ptr<Catch::CumulativeR
	eporterBase::SectionNode>*, _Container = std::vector<Catch::Ptr<Catch::Cum
	ulativeReporterBase::SectionNode>, std::allocator<Catch::Ptr<Catch::Cumula
	tiveReporterBase::SectionNode> > >]() == __val’. 

This commit fixes the issue by replacing the friend comparison operator with a functor.