Improvements to inequality solving

fixes #8206 (please feel free to any others that are related that also work with these changes)
fixes #8518
Inequalities only apply to real expressions so making the symbols real shouldn't change the validity of the result. (And requiring the user to state the obvious is a nuisance.) The validity of the assumption is enforced by the Relational. IMO, it is worse to send back a solution which, when symbols are substituted, gives the wrong answer: in master, `solve(x > 3) ~~> And(re(x) > 3, Eq(im(x), 0)).subs(x, I) -> False` rather than raising an error.