A group of skills that have been unlocked by a player. Each skill group has
independent exp and skill points which are used to unlock skills in that
skill group.
Contains the prerequisite skills for each skill. It cannot currently detect
cyclic dependencies, so if you modify the prerequisite map ensure that there
are no cycles of prerequisites.
Contains all of a player’s skill groups and skills. Provides methods for
manipulating assigned skills and skill groups including unlocking skills,
refunding skills etc.
BTreeSet is used here to ensure that skills are ordered. This is important
to ensure that the hash created from it is consistent so that we don’t
needlessly force a respec when loading skills from persistence.