The container headers don't need to include <functional> for any other reason (or at least, they wouldn't if we moved less and equal_to out of <functional>), so let's put __libcpp_erase_if_container somewhere that's common to the containers but outside of <functional>.
Also, calling std::erase_if(c, pred) should not trigger ADL.