Perform some geometric RV computations in log space to increase accuracy.

I wanted to get nonzero answers to something like
    geom.cdf(1e6, 1e-20)
These new functions seem to be a more computationally intense however, they seem to take an order of magnitude longer. With these new implementations,
    geom.cdf(1e6, 1e-20) == 9.9999999999999495e-15
if you guys think the accuracy is worth it. I also threw in a few more tests for these functions.