refactor PileupElement, elementAtGreaterLocus

- elementAtGreaterLocus was mimicking the vals in PileupElement;
  cleaner to advance through loci by making new PileupElements
  at each CigarElement
- keep all CigarElements around in PileupElement; track current 
  idx into that array
  - used especially in indel code downstream
- correctly handle insertions at the start of a contig (include
  trailing reference base)
- correctly handle insertions at the start of a read (skip them;
  they don't count for reference locus that lands at the first
  read-base after them)
ah, of course, you're right.

other points about this theoretically leaving us access to e.g. the previous `CigarElement` (which I thought I was going to need but so far have not) are still relevant I think, though not very substantial one way or another.