Add CsgTest (9 tests) — first-ever coverage of the CSG/BSP machinery
Covers: union/subtract/intersect for disjoint+overlapping boxes
(interior-face and containment invariants), determinism (bit-exact
repeat runs), input immutability, and degenerate empty operands.
The test immediately caught a real defect: Csg.intersect with an empty
operand returned the FIRST operand unchanged (classic BSP sequence
degenerates: clips against an empty tree are no-ops and the inverts
cancel). Csg now guards empty operands explicitly in all three ops.
A naive polygon-count assertion in the test itself was also corrected
to the meaningful centroid invariant (BSP splits boundary faces,
making net counts meaningless).