Smith-Waterman local alignment algorithm.
Design Note: this class implements AminoAcids interface: a simple fix customized to amino acids, since that is all we deal with in this class Supporting both DNA and Aminoacids, will require a more general design.