Add timing groups
This PR adds timing groups to Qua files.
tl;dr: you can now have independent groups of notes that use different sets of SVs.
A timing group is a controller of hit objects. A hit object can choose to reside in one and only one timing group (and a timing group can have multiple hit objects). The timing group defines the way the hit objects inside it visually changes as time goes by.
Each timing group has a unique ID, consisting of alphanumerical characters including _. HitObjects refer to the group using the ID.
A ScrollGroup is derived from timing group and will drive notes with its own list of SVs and InitialSV, for example.
Further development might extend this so that the visual of the note can be directly controlled by lua scripts.
Additions
-
Qua.ScrollGroups: list of scroll groups - HitObjectInfo.TimingGroup`: the ID of the timing group this hit object belongs to. If not specified or left empty, the default group is used.