use solve_rational in solve_univariate_complex

this commit also includes a hack to prevent equation
like a + 4*x**2 - E from oscillating
into form  a/4 + x**2 - E/4 and (a + 4*x**2 - E)/4
`together` turns a/4 + x**2 - E/4 into (a + 4*x**2 - E)/4
which is turned back into its original form by simplification with
`invet_complex` and solve_univariate_complex is again called on it
putting it into an infinite recussion.

The hack is instead of just:
    f = together(f)

we now have:
    f = together(f)
    if not fraction(f)[1].has(symbol):
        f = expand(f)