[ADAM-327] Adding gene, transcript, and exon models.

A few major changes in these commits: 

* Upgrading to bdg-formats 0.3.1
* This version of bdg-formats changes the Pileup schema, so we fix all the errors that this introduces -- and we _eliminate_ the Pileup aggregation code
* This version of bdg-formats also changes the Feature schema, so we've updated the feature parsing code to create these new features correctly
* The FeatureHierarchy classes have been rewritten as wrappers around Feature
* Added Gene, Transcript, Exon, and UTR case classes to represent gene models, and added code for assembling them from 'flat' Features.




Basically, it's a question of the interaction between the coordinates of the Extractable object and the sequence you give it -- the coordinate `0` needs to correspond to the first character of the sequence you pass in.  I'll add more documentation.