Delay MDTag parsing

From some basic profiling I saw that we spend a fair amount of time parsing out the MDTag and then calling .toString on it when we serialize the reads.  When we are repartitioning the reads, we parse and then reserialize the mdtag and then reparse when we process.  This change would only parse the tags when we access them (for example in pileup processing) but at the cost of hanging out to the original mdtag string