Fix for #1430

In Relation, ``_1s`` is defined as "Returns the set of all `_1`s such that `(_1, _2)` is in this relation.". Which is false: it is implemented as fwd.keySet, but it should be fwd.filterNot(_._2.isEmpty).keySet. Except setAll() depends on the incorrect semantics, and the apparently innocuous optimization in 322f6de broke it as a result. This pull request reverts the change, pending an implementation of setAll which does not depend on ``_1s`` (after which ``_1s`` can probably be fixed).