Added various factorial providers and caches.
Switch to iterative factorial calculation over recursive, for performance reasons.
Added method to BezierCurveUtils to calculate x and y in one method, as opposed to two.