A review of somatic single nucleotide variant calling algorithms for next-generation sequencing data