Initial flesh out of fitler_iterator

Fleshed out an initial version of filter_iterator.

Added range_traits to range_util to easier derive information about
existing ranges.

Fixed some bugs.