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)
haha, *sheepish*, yea.

I decided that just passing the idx *instead of* the remaining elements makes sense. Should save some object allocations, and also gives the option of looking arbitrarily far forward or back in the cigar string if we find ourselves wanting more context.