Refactoring transition matrix to allow for cleaner configuration

Modifies transition matrix code to add a case class for config. Additionally, this new configurability is propagated back into the HMM aligner and assembler code. Specifically, we modify the Haplotype class to support the use of different aligners for aligning haplotypes against the reference genome, and for aligning reads against haplotypes.

The big significance of this last change is that sequencer error models can be incorporated into the haplotype clustering model. In the default assembler config, we now provide a generic Illumina error model for the read aligner.