And fix the other soundness bug.

This broke other tests.
Fix tree-coroutine.mz

This actually found another bug in the type-checker, which now crashes on this
example.
Add a missing rule.

The type-checker knew that:

  x @ Cons { head; tail } * x @ list a

implies

  x @ Cons { head; tail } * head @ a * tail @ list a

but it didn't know that

  x @ list a * x @ Cons { head; tail }

implies

  tail @ list a * x @ Cons { head; tail } * head @ a
[iteration.mz] and [mutableTreeMap.mz] are now fixed

Also, the call to stash::stash is mutableTreeMap is no longer needed.