DownsampleSam for BWA MEM and non-Illumina platforms

Add discard level option to DownsampleSam and ensure non-primary reads are retained by default.
Switch from using hashtable to store readnames to using hash projection to identify read
names to remove.

Signed-off-by: Martin Pollard <mp15@sanger.ac.uk>