Relational.canonical simplifies Ge -> Le and Gt -> Lt

This is made part of Relational simplification.

The presence of Relationals in Booleans sent to equals
raises an error since that routine is not set up to handle
them.
And and Or are complementary-arg aware

In addition, trivially equivalent forms like x > 1 and 1 < x are
recognized.
Implies is complementary-arg aware
Xor is complementary-arg aware
Equivalent is complementary-arg aware
8413: Min and Max are floor and ceiling aware

- facilitate changes with reversed property of Relational which
  reverses the direction of the Relational
special-case +/-oo in _Inequality
put Number on rhs when simplifying Relational

This will allow any test to be written as 0 < x or x > 0 since the former
will turn into the latter by Python rules (unless S(0) < x is written).
do not evaluate in reversed
rework connectivity testing; watch for evaluation
do not accept serendipitous evaluation in And/Or
add coverage tests
make Number on rhs part of Relational.canonical
do not use canonical unconditionally in simplify
review edits

canonical was defined for BooleanAtom so if a relation evaluates one can
still use the property:

e.g. (3 <= oo).canonical -> true instead of an error

Since no other algebraic operations are defined for Relationals, __neg__
was not defined, either. Removing a leading sign from the lhs is now
part of canonicalization. To negative both sides of a Relational, the
following can be done:

r.reversed.func(*[-i for i in r.args])
limit floor/ceiling relationals to real args
Merge pull request #8423 from smichr/rsimp

8413 and 8373 related changes