[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.




It seems like it'd be a lot easier _and_ more performant to partition or group by the transcript ID, and to then iterate over that transcript ID to build these models. 3 groupBys and 2 joins seems unreasonably expensive. What's the runtime of this look like right now?