check for trivial roots before attempting factoring

Although it is easy to order the binomial roots, if a binomial is allowed
to factor then the procedure to order the roots is time consuming and can
fail.

>>> Poly(a*x**n+b,x)
Poly(-4*x**8 + 1, x, domain='ZZ')
>>> factor(_)
-(2*x**4 - 1)*(2*x**4 + 1)

If the all_roots is called on the Poly, an error will ensue:

NotImplementedError: 2 element rule
Revert "check for trivial roots before attempting factoring"
8296: fix nroots ordering
8285,8289: further refine complex intervals while sorting

In order to be able to handle pure imaginary roots, they
have to be identifiable. So when a binomial factor is
identified either at creation of the COmplexInterval or
during the sorting of complexes it is separated from the
other complex intervals.

TODO: find the expression in test_nth_linear_constant_coeff_homogeneous
that fails if imag only checks u.is_imaginary.