Fixes a performance bug in collection (DFS was incorrectly implemented).
Expressions could be traversed repeatedly, since the mark was not checked
before descending.

This improves the performance of reverse, but does not fix SEGVs in tree_insert
and tree_insert_32.

On snares:

------ Config refcnt-opt ------
reverse              0:01.11
tak                  0:00.65
rfib                 0:00.15
exp3_8               0:00.20
------ Config gc-opt ------
reverse              0:00.66
tak                  0:00.84
rfib                 0:00.23
exp3_8               0:00.10