Extended chord parsing

Instead of comparing requested chords with a predefined set of strings,
the getScale function will now dynamically determine what notes belong
in the chord in relation to the song's key signiture, allowing for more
obscure chords (like B, or F#m, etc.).