Build up reference information during cigar processing

This PR is to track more reference information during the cigar processing.

Currently, RichADAMRecord parses the Cigar string to extract the reference position (as a Long).
This:
- Also captures the reference base, cigar element, and cigar offset (which will allow for us to not reparse the cigar string when building pileups)
- Change reference position to be an instance of ReferencePosition (and changes the overlaps function to check other ReferencePosition ensuring a contigName check (resolving #113))

Also, this removes ReferenceLocation in favor of ReferencePosition as they had duplicate functionality

Noted issues:
- This has overlaps with #230 slightly 
- This still uses the current Cigar processing from samtools, there was some talk of removing this dependency
- DecadentRead vs RichAdamRecord do we want to merge or distinguish these more?