8413 and 8373 related changes

See #8413 and #8373 

- [x] check coverage, especially the handling of duplicate args by Xor and Equivalent

(If anybody would like to take this over, that would be fine with me.)
The former is more informative.
c.f.:
```
In [3]: e = Eq(x, x, evaluate=False)

In [4]: e
Out[4]: x = x

In [5]: bool(e)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-001118d8d3c5> in <module>()
----> 1 bool(e)

/home/sk/src/sympy/sympy/sympy/core/relational.pyc in __nonzero__(self)
    101 
    102     def __nonzero__(self):
--> 103         raise TypeError("cannot determine truth value of\n%s" % self)
    104 
    105     __bool__ = __nonzero__

TypeError: cannot determine truth value of
x == x
```