[WIP] Avoid computing the reference base and hanging on to md tag

This builds on #220.

Right now we keep the referenceBases and mdTag even though they contain the same information - if we have computed the referenceBase we no longer need the mdTag and the mdTag can be fairly large memory-wise.  However, it is useful currently to quickly check whether a pileup element is a match.  Instead we should pass in a reference base to each pileup a and pileup element

This is a bit clunky right now but wanted to hear thoughts on doing this or not.
lazy val keep the mdtag around (in-memory) while def would discard is after it's used.  This should be as significant since hopefully we only do this on one read at a locus, but right now this only accessed to build the reference and once that's done we shouldn't hang on to this.