Add new iterator adapator .filter_scan()

filter_scan() is like scan() but it skips None values. It also has a
method .chain_state() that adds one final iteration value by mapping the
state through a closure.