The inverse of parseChordSymbol: each quality maps to one canonical
suffix spelling, and a slash bass is appended only when it differs from the
root. When the chord carries rootSpelling/bassSpelling hints (as chords
from parseChordSymbol do) and no explicit flats preference is
given, the hints are reused so flat symbols round-trip unchanged.
Format a Chord as a lead-sheet chord symbol.
The inverse of parseChordSymbol: each quality maps to one canonical suffix spelling, and a slash bass is appended only when it differs from the root. When the chord carries
rootSpelling/bassSpellinghints (as chords from parseChordSymbol do) and no explicitflatspreference is given, the hints are reused so flat symbols round-trip unchanged.