calls to roots_quadratic and roots_binomial must request sorting

Now the methods used to sort for _trivial_roots may fail with
impunity because there is no gurantee that the roots will be
sorted in any way by these routines unless the _sort flag is True.
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
add explicit test from 8255