Improve the pattern for 'li(z)'

By generalizing the pattern we can now do this:

>>> integrate(li(a*z**2), z)
z*li(a*z**2) - z*Ei(3*log(a)/2 + 3*log(z))/(sqrt(a)*sqrt(z**2))

which is correct:

>>> diff(_, z)
-3*a*z**3/((3*log(a)/2 + 3*log(z))*sqrt(z**2)) + 2*a*z**2/log(a*z**2) + li(a*z**2)

>>> simplify(powdenest(_, force=True))
2*a*z**2/log(a*z**2) - 2*a*z**2/(log(a) + 2*log(z)) + li(a*z**2)

>>> pprint(_)

       2               2
  2⋅a⋅z           2⋅a⋅z           ⎛   2⎞
───────── - ───────────────── + li⎝a⋅z ⎠
   ⎛   2⎞   log(a) + 2⋅log(z)
log⎝a⋅z ⎠

as far as these logs do not mess up branch cuts.

However, we can not do the general case although the pattern is
strong enough. Trying:

>>> integrate(li(a*z**b), z)

we get a:

RuntimeError: maximum recursion depth exceeded while calling a Python object