Use Query instances as iterables when possible

A Query.all() call creates a list of a DB query results.
We can actually use a Query instance as an iterable and
thus avoid creation of a list if we just need to iterate
over those values only once.

Fixes bug 1173133

Change-Id: I06d8eaa9eaba4c71aa0c98000735cb9d83ea19a3
Merge "Use Query instances as iterables when possible"