Fixup the Shannon expansion method

Previously, if you did something like this:

>>> f = Xor(a, b, c)
>>> f.expand(a)
a' & Xor(a, b, c) | a & Xor(a, b, c)

This is logically equivalent, but doesn't quite get Shannon expansions
correct.

The correct expansion would restrict a=0/1 in the original function
during the expansion:

>>> f.expand(a)
a' & Xor(b, c) | a & Xnor(b, c)