8413 and 8373 related changes

addresses #7950 
closes #8413
closes #8373 

* Relational.canonical will put a Relational into canonical form which is
useful for testing whether two Relationals are trivially the same.

* Relational.reversed gives the Relational with lhs and rhs reversed and
the symbol updated accordingly (e.g. (x < 1).reversed -> 1 > x

* Simplification of Relationals will, if the threshold for simplification is
met, also return the Relational in canonical form. One of the criteria
of being in canonical form is that the Number will be on the rhs. This
makes writing tests a little easier so S(1) > x can be entered as 1 > x or
x < 1 (the former being turned into the latter by Python).

* boolalg functions And, Or, Implies, Xor, Equivalent are aware of
Relational complements and trivial equalities, so, for example, 
And(x<1,x>=1) will reduce to False while And(S(1)>x,x<1) reduces to x < 1

* The function used to test connectivity in Min nd Max has been altered to use the weaker form
of a relationship since this applies to arguments like floor(x) and x: though in generally
we cannot say that floor(x) < x, if x is real we do know that floor(x)<=x. This allows
Min(x, floor(x)) -> floor(x) without loss of generality when x is real.