fix: canonicalize negative NaN in multi-column sort comparator
arrow-rs make_comparator uses IEEE 754 total ordering where negative NaN
sorts before all values (-NaN < -Inf < ... < +Inf < +NaN). Daft's sort
contract treats all NaN as greater than regular values. Normalize negative
NaN to positive NaN before passing float arrays to make_comparator.
fix: Filter null bytes from generated column names in property-based tests
The Hypothesis `text()` strategy can generate column names containing
embedded null bytes (`\0`), which causes a panic in arrow-rs's FFI layer
(`FFI_ArrowSchema::with_name` calls `CString::new(name).unwrap()`).
This only manifests on the Ray runner since it serializes Series via
`__reduce__` → `to_arrow()` → Arrow C Data Interface.
Null bytes in column names are inherently invalid for the Arrow C Data
Interface (which uses null-terminated C strings), so filtering them from
generated test data is the correct fix.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>