Relational gets keyword `check`

An additional level of evaluation is added with the keyword `check`.

Both Lt(x, 1) and x < 1 behave the same in returning an unevaluated
relational, even if evaluate=True. The only checking that occurs is
a check that x.is_real is not False. Since the value of x is unknown
the unevaluated relation "x < 1" is returned. This means that code
that wants to test if an actual value was returned must test it
explicitly as 'if (x < 1) == True'.

With the new keyword, checking that the result was obtained is
part of the function call itself. If a result was not (or could not)
be obtained either None is returned or an error is raised.
There are 3 levels of checking as described in the function's docstring.