WIP/HACK/NOISE: poly_split() cannot fail

This alters poly_split() in a way that it cannot "fail" by returning
-1, the new paths allow for polygons to fail vertex pushes, then
continue accumulation, with a noted failure.

Before returning the potential `front` and `back` polys are considered
for validity (if failure was flagged -- for now) and free'd if invalid.

This allows the caller to get back NULL pointers in `**front` and
`**back`, but that case is already handled.