RSE bug fix.

Avoid blowing the stack when a rule's LHS collection also appears on the RHS.
Improve RSE.

Given

  foo <= bar.notin(baz)
  baz <= qux

Where baz is a scratch and qux is a persistent table, we can still reclaim from
bar. This significantly increases the space of negations for which we can safely
do RSE.

The exact conditions might need some refinement.
Add another test case for RSE w/ scratch as outer neg input.