Make MappedRead require MDTags

We had this assumption in the code anyway, so I've formalized it here.

I've also added the `MappedRead.referenceString` helper that computes/stores the reference sequence corresponding to a read, computed using the cigar and MD tag.