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.