Add enum DiscardLevel to indicate which non-primary reads to discard.

Add enum DiscardLevel to indicate which non-primary reads to discard.  This relates to changes to DownsampleSam in Picard repository.
This is clever, nice!

One q: would returning `true` with probability `prob` be more intuitive? If I make a `HashDecisionProjector` with probability `0.9` I would expect it to `decide` something that logically represents `true` 90% of the time.

I understand that the question you're asking today using this is whether to drop things, which is kind of `false`-y, but maybe that logic should live in the caller. Just my $0.02!