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.
Can you add some unit tests for this function?