Forward/reverse inclusive range. If start <= end, returns a forward iterator from start
to end, inclusive. Else, returns a reverse iterator from end to start, inclusive.
Iterates through a “selector” of len elements, generating every possible selection. The idea
is that you “select” the elements in some other structure at the indices where the returned Vec
is true. Put another way, the returned Vec<bool>s can be looked at as counting up in binary.