added ``minimal_polynomial_sq`` and ``nthroot``

``minimal_polynomial_sq`` returns the minimal polynomial for the
``nth-root`` of a sum of surds.

``nthroot`` computes a real ``nth-root`` of a sum of surds.
modified ``minimal_polynomial`` to call ``minimal_polynomial_sq``;
solved issue 2895
code cleanup
3731: multinomial recurses when necessary

* define the hint's method name at calling time

* there was now a case where cargs was not null that had to be handled

* _eval_expand_multinomial

  - there was some strange legacy code at the start that was removed
  - touchup function that clears any newly created powers was added
  - the note about using Poly to give the expanded expression was
    removed since Poly returns a flat expression and flattening Muls
    is not the job of this method
fix for 2.5 compatibility and other corrections
2820: expand_mul expands denominators fully

The problem was that when n was an Add that itself contained
fractions, those fractions that created a new expandable
Mul in the denominator were not being expanded, e.g.

(1+1/x)/(x*(x + y)) -> 1/(x**2 + x*y) + 1/(x**2*(x+y))
handle recursion in expand, not the _eval_* level
fix failing tests
faster minimal_polynomial for sum of surds
minimal_polynomial_sq renamed _minimal_polynomial_sq
Changed the numerical test in ``minimal_polynomial_sq``
unrad modifications
use unrad in minimal_polynomial
select minimal factor from unrad result
use verified nsimplify in minimal_polynomial
nsimplify as fallback; check irreducible before factoring
radsimp modifications

Radsimp now handles the general solvable denominator that contains
4 radicals.

sign simplification is also employed on the return expression except
for the case where "sign trickery" is needed to keep the expression
from reverting to the original expression. It is perhaps a better idea
to use an unevaluated Mul with sorted args.

collect_sqrt is no longer used since that doesn't handle properly
the case for issue 2895.
define _addsort/_mulsort to identify its usage in codebase
added ``_choose_factor`` and an example of minimal_polynomial using
high precision
faster numerical evaluation in ``choose_factor``
always return a canonical unevaluated Mul from radsimp