[ADAM-327] Adding Gene, Transcript, and Exon models

Not yet ready for merging. 

Preliminary support for gene models from GTF files.
Take, as an example, these four lines from the gencode v19 gene GTF: 
```
chr20   HAVANA  exon    76646   77174   .       +       .       gene_id "ENSG00000178591.6"; transcript_id "ENST00000382410.2"; gene_type "protein_coding"; gene_status "KNOWN"; gene_name "DEFB125"; transcript_type "protein_coding"; transcript_status "KNOWN"; transcript_name "DEFB125-001"; exon_number 2;  exon_id "ENSE00001491984.2";  level 2; tag "basic"; tag "appris_principal"; tag "CCDS"; ccdsid "CCDS12989.2"; havana_gene "OTTHUMG00000031614.3"; havana_transcript "OTTHUMT00000077426.2";
chr20   HAVANA  CDS     76646   77055   .       +       2       gene_id "ENSG00000178591.6"; transcript_id "ENST00000382410.2"; gene_type "protein_coding"; gene_status "KNOWN"; gene_name "DEFB125"; transcript_type "protein_coding"; transcript_status "KNOWN"; transcript_name "DEFB125-001"; exon_number 2;  exon_id "ENSE00001491984.2";  level 2; tag "basic"; tag "appris_principal"; tag "CCDS"; ccdsid "CCDS12989.2"; havana_gene "OTTHUMG00000031614.3"; havana_transcript "OTTHUMT00000077426.2";
chr20   HAVANA  stop_codon      77056   77058   .       +       0       gene_id "ENSG00000178591.6"; transcript_id "ENST00000382410.2"; gene_type "protein_coding"; gene_status "KNOWN"; gene_name "DEFB125"; transcript_type "protein_coding"; transcript_status "KNOWN"; transcript_name "DEFB125-001"; exon_number 2;  exon_id "ENSE00001491984.2";  level 2; tag "basic"; tag "appris_principal"; tag "CCDS"; ccdsid "CCDS12989.2"; havana_gene "OTTHUMG00000031614.3"; havana_transcript "OTTHUMT00000077426.2";
chr20   HAVANA  UTR     77056   77174   .       +       .       gene_id "ENSG00000178591.6"; transcript_id "ENST00000382410.2"; gene_type "protein_coding"; gene_status "KNOWN"; gene_name "DEFB125"; transcript_type "protein_coding"; transcript_status "KNOWN"; transcript_name "DEFB125-001"; level 2; tag "basic"; tag "appris_principal"; tag "CCDS"; ccdsid "CCDS12989.2"; havana_gene "OTTHUMG00000031614.3"; havana_transcript "OTTHUMT00000077426.2";
```

What's happening here is that each of the CDS and UTR annotations are subsets of an Exon annotation ("subset" in a spatial sense) for their parent transcript.  If you take the union of all the CDS+UTR annotations for a transcript, you _should_ get the same bases that are covered by the Exon annotations.  

Does that make sense?  I'm not coding these requirements since I'm not sure how hard-and-fast they are, but they are (basically) the way that (I understand) the Ensembl and Gencode GTF gene annotations to work...