add GAReferenceSequenceSet

This is to strengthen reference sequence issues.  Important semantic changes are:
  - require some way to obtain the sequence, either by URI, accession or literal sequence.  Though not required by BAM this is needed by CRAM and good practice in an internet API world.
  - share reference genomes (reference sequence sets) by id across all readgroups using them, and require readgroupSets to map to the same referenceSequenceSet for all readgroups within them. 

I introduce a GAReferenceSequenceSet record.  Something like GRCh38 will be a referenceSequenceSet.
Now a readgroup refers to the referenceSequenceSet it aligns to by id, not the array of sequences.
We want ids because we will use the same referenceSequenceSet across very many samples.
We require that all readgroups in a readgroupSet align to the same referenceSequenceSet, so that combining data across them makes sense.

I also made much clearer in comments the semantics of where literal sequences are obtained from, and of derived sequences and sequence sets:
 - for derived sequences I introduced the sourceDivergence, and I described derived sequenceSets as ones that either contain (some) derived sequences or contain additional sequences beyond those in the accession from which they are derived.

Finally, I changed contigName and contigSequence in alignments to referenceSequenceName and referenceSequence, for consistency and because this is what they are.  contigName is the name of a referenceSequence.