correct implementation of difference

Previously, difference was actually returning the symmetric difference.  This patch corrects the behaviour of difference and adds a symmetricDifference method.