generalize Alleles to contain refBases & altBases, take 2

PROBABLY DON'T MERGE: this depends on the MD-tag fix in ADAM `0.13.1-SNAPSHOT`, which Frank estimated will go out in a release later this week. In the meantime, no need to have `master` point at an ADAM snapshot.

this PR includes indel code and some refactorings of Pileups, GenotypeAlleles, and others to support a universal notion of an Allele that is determined by multiple reference bases and multiple sequence bases.

I back-ported existing callers to be more general of their handling of variants/alleles, accordingly.

This should let us reuse a lot of @arahuja's bayesian/log-odds variant-analysis/filtering code across callers more easily.
cool, pushed, though I'm interested in why `Ordered` doesn't give me `==` and `!=` out of the box. Also, seems like I still need `AlleleOrdering extends Ordering[Allele]` for e.g.

`  private[pileup] lazy val possibleAlleles = elements.map(_.allele).distinct.sorted(AlleleOrdering)`

from [here](https://github.com/hammerlab/guacamole/blob/ryan-slo/src/main/scala/org/bdgenomics/guacamole/pileup/Pileup.scala#L57)