It looks like this is actually pretty polished up to the parsing of ProteoformGroup objects. What's next?
We're not validating the modification sites... should we check to see that the amino acid target makes sense for the modification?
Should we create a ProteoformFactory, that can generate possible proteoforms given a proteoform group? This would allow us to consider the ambiguity descriptors.