split apart dependencies of vaccine peptide selection

* added unit tests for individual ranking components
* vaccine peptide sorting by four criteria (mutant epitope score, negative wildtype epitope score, number mutated residues, distance of mutation start the edge of vaccine peptide)
* print and write FASTA of vaccine peptides with a little mutation metadata
* print epitopes associated with each mutation
Seems confusing to me that these two are bundled together. Why are we dealing with the vaccine logic if print_peptides == True but vaccine_peptide_file == False?

*Ah*, vaccine_peptide_file just means we're saving to a vaccine peptide file (vs. printing to the peptides). The variable names are a little weird, as I thought peptides != vaccine_peptides. Add vaccine to the 1st var or remove it from the second?