fix: reject cyclic arrays in PHP-to-Go conversion
goArray() and GoPackedArray() followed self-referencing arrays until the
Go stack overflowed. This runs in a cgo callback, so the overflow aborted
the whole process: a cyclic array reached it through frankenphp_log(), a
worker callback's return value and the extension API.
Mark arrays with GC_TRY_PROTECT_RECURSION while they are converted, as
json_encode() does, and return an error when a cycle is found.