non_clean_card_iterate() collects contiguous ranges of dirty cards
which are then processed by ClearNoncleanCardWrapper in a second traversal.
There is really no need for two traversals, rather non_clean_card_iterate()
need not be used and all of the work can instead accomplished in a single
traversal of the cards in the range being scanned by CleanNoncleanCardWrapper.
This might even improve performance by a bit (but more importantly it would
reduce the complexity and interdependencies within the card table hierarchy).