Implement RecursiveCallbackFilterIterator

Fixes #1894