Refactored `utility.fib()` to use `array.fib()` by default and added an optional second parameter to trigger recursive behavior, implemented `math.bezier()` with support up to 4 control points