Substantial change to paired end alignments

AbstractPairedEndAlignment handles most functionality of paired end
alignments, with the exception of the instantiation of the superclass
BasicAnnotation. Two subclasses of AbstractPairedEndAlignment handle
the two possibilities: using the two reads as blocks or using the full
fragment as blocks.