Separated the state represented in a FretboardModel from the chord

generation logic, which is now kept in instances of
ChordFingeringGenerator. This seems to employ Separation of Concerns while
not hurting efficiency.