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.
Hi yfarjoun, This function is already covered by unit tests (see: the testCalculateNumLikelihoods methods in the tests).  For what it is worth, I also tested it with my own tests before seeing that in the repo.  This pull doesn't actually change the behavior of the function, it simply gives it a faster implementation.