Refactoring the MarkDuplicatesWithCigar code and utilities: splitting
into multiple classes, etc.

MarkDuplicatesWithCigar now requires both the MC and DS tags to be
present to work.

Adding more test cases.