Optimized iterators should be Close()d by caller

Not closing in Optimize ensures that iterator.And or others can try
multiple options to decide on best path.

Clarifying Close() contract in interface ensures that calling code does
not leak database connections or other data.