Perhaps `DDesc.where` should produce a DDesc rather than an iterator?

It would be nice to establish some standards on what the various abstractions consume and produce.  For example I would like to see array operations produce arrays, not DDescs.  Here perhaps the analog is that I would like to see DDescs produce DDescs, not iterators.  I don't know though; I haven't thought much about this.