Avoid recursion using math.

This changes how the number of genotype likelihoods are calculated to use a direct solution rather than solve computationally by recursion. It is useful for the unifiedgenotyper when it is called at high ploidy
because the values are not cached and so are recalculated with ~100ks of function calls on each go.

Note that a future pull request could change the caching scheme to use dictionaries and further save time.
PS I just realized we both work at the Broad, though don't think we have met.  I am over in 7CC right now if you are around, would be happy to swing by and say hi.