Commutes improved.

Shielded.Commute() is now strictly limited - no enlist allowed inside, except
that field! This enabled a far better commute degeneration algorithm - the lib
correctly recognizes which commutes to degenerate, and does not execute them
all any more.