Move haplotype to separate classes

This takes the haplotype code to independent files - in general, I'm interested in decoupling this somewhat from the hmm implementation