Fix inaccurate root finding of resultant.

The resultant often has roots of large degree that cannot
be resolved accurately by sympy. Using res.nroots(),
artificial (non-existent) roots appear from roots with
high multiplicity. Using RoofOf constructs, some roots
are missed, perhaps due to some error where RootOf labels
a given root as both root i and root j.

The current solution is to first factor the resultant and
then compute the numerical roots of each factor.