fix #25497: unison head size comparison fails sometimes

Compare small() properties of notes and chords individually rather than floating-point-comparing headWidths.  New code also handles mismatches better - eg, full size chords with small noteheads cannot actually combine.  Added test for these cases; the floating point compare problem was not reproducible on command anyhow (but it was another vtest that pointed out the problem to me!)