make polyroots more robust

* fix tolerance calculation

We now set the tolerance `tol` directly equal to `ctx.eps`. This is the right
way to do it, since if more working precision is needed, the user needs to
assign the `extraprec` argument.

* use `extraprec` argument

Previously this argument was not used at all by a mistake and instead the
default value 10 was assigned directly.

* chop small numbers in "cleanup" mode

Previously only small real or imaginary parts were chopped. But if abs(x) is
close to zero, we want to chop this case as well.

* Raise NoConvergence error if convergence is not achieved

* always refine all roots

Previously if the given root was already converged, it wasn't refined. But this
seems to increase the number of iterations needed to converge considerably.
Add a test for polyroots
Add a test for NoConvergence
Use +ctx.eps instead of ctx.eps*1
Use extraprec context manager

Instead of try/finally blocks.
Use workdps context manager in the test
polyroots: Improve documentation

We did few changes here and there and added a new section about how the
precision works.
Merge pull request #15 from certik/polyroots

Make polyroots more robust