Changes to support DownsampleSam update

Add enum DiscardLevel to indicate which non-primary reads to discard.
Create HashDecisionProjector to decide based on hash of read name
whether or not to keep read.