[#51] Finite discriminant paths seem to work.

A path to a discriminant place seems to work. Only
preliminary tests have been done because of Puiseux
performance issues. In particular, computing Puiseux
series of places at an x-point where the symbolic expression
contains a lot of terms.

Here's an example where it works:

    import abelfunctions as ab
    from sympy.abc import x,y
    f = -x**7 + 2*x**3*y + y**3
    X = ab.RiemannSurface(f,x,y)
    b = X.discriminant_points(exact=True)
    a = b[3]              # the disc point at x=a
    places = X(a)         # there are two places at x=a
    gamma = X.path(P[1])  # P[1] is 2-ramified

However, a different choice of x=a causes the path
construction to hang.
Checkpoint
Improve Puiseux and discriminant point performance.

Puiseux series calculations at discriminant points were
taking far too long. Imrpoving the way discriminant
points were calculated as well as the way Puiseux handled
symbolic expressions produced a 90% performance improvement
in tested cases.

In particular, coercion between sympy.Expr and sympy.Poly
objects was kept at a minimum and sympy.RootOf constructs
are used in place of complicated and long combinations of
square roots and complex numbers.