Search a directory recursively, with recursion controlled by a
RecursionPredicate. Fold over all files found. Any errors that
occur are ignored, with warnings printed to
stderr. The fold
function is run from "left" to "right", so it should be strict in its
left argument to avoid space leaks. If you need a right-to-left fold,
use
foldr on the result of
findWithHandler instead.