minor tidy/modify
add filldedent to namespace
use root(foo, n) instead of foo**Rational(1,n)
modify roots_binomial and roots_quadratic

These two routines supply roots to _roots_trivial which expects
the results to be in the same order as the RootOf instances. Although
the sorting could take place in _roots_trivial, all the information
about the roots is in these routines so it makes sense to sort them
in that information-rich context. In order to keep this fast, no numerical
calculations are made.

Sorting is a slow operation and was added to get consistent results
from these routines (all roots_foo in polyroots). Now that Add's args
are not sorted by hash this is no longer an issue, so sorting is
now a private option to these private functions. TODO remove sorting
from all routines.

An advantage to not sorting is the freedom to fail to return items
in any sorted order. Nonetheless, when the domain is ZZ the roots
will be sorted (reals first, then non-reals according to real then
imaginary parts) and that is what is important to _roots_trivial.
cache _roots_trivial

Without caching, the roots have to be recomputed each time a new
indexed value of a RootOf instance is requested.
reverse roots in inequalities; add tests
Add Michael Gallaspy to AUTHORS/aboutus. Welcome to SymPy!
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
8289: further refine complex intervals while sorting
8296: fix nroots ordering