MusicXML: Correctly convert nested staff/part groups
In MusicXML, part group nesting is done simply by inserting
start/stop markers in the list of parts, where the part groups
might even overlap. In Lilypond, we want the real hierarchy (so
that we can assign group names etc.). To achieve this, we need
to loop through all parts, trying to detect the correct start/stop
markers. What makes things even more complicated is the fact
that the group IDs don't have to the unique in the whole score,
just unique enough to describe overlapping part groups. The other
issue are overlapping part groups, which we need to split up into
a part, which fits into the hierarchy and the remaining part, which
we simply ignore.