Added Index.find_between and fixed an iterator

Added `find_between` in `Index` instead of de-duping using `set & set`

Also `iter(filter)` creates an intermediate list, `ifilter()` should not