Separate QuerySet iter caching from .iterator() one
Separate QuerySet iter caching from .iterator() one

The issue with caching in .iterator() is that it's not garanteed to be
read through, so it might be useless in-memory accumulation now. For the
same reason it's inherently incompatible with locking since we need to
know that we are going to write to cache as soon as the result is
obtained.

This is a preparation for implementation of locking to handle dogpile
effect.

Caching of .iterator() is to be dropped with next major release. It is
not that useful anyway. The main purpose of using .iterator() is to
bypass QuerySet in-memory cache and this one is defeated when caching is
on.

LPgenerator/django-cacheops,Suor/django-cacheops