Using a non-Eiffel aware lock in qoq.

Since this is a bounded (short) waiting time we don't need to sync for GC here.
Using a more straight-forward cache check.

Now it uses `count' rather than `find' as then we don't need to bother
about the `end' iterator. This seems easier to read, not involving
iterators.