Fix in commutes.

There was a possibility for a commute to run twice in the situation when Enlist()
recurses in itself, and finds new commutes to execute.
Also, an unrelated test addition.