maximum a posteriori and fb upgrades

Forward-Backward now allows you to specify the keyword parameter "tie", which can be either true or false. If you specify true, it will replace the emission log probability of an observation given a state in a tied state group, with the sum across the entire group. Meaning basically, if there's a 0.01 probability of it being in one of the tied states, and a 0.54 probability of it being in another of the same set of tied states, it'll replace both values with 0.55. If you set it to false, it will ignore tied states.

Maximum-A-Posteriori used to be somewhat slow because it would call forward-backward, and then only use the emission weights. It was also purely in Python. I cythonized it, and made it calculate the emission weights inside the method instead of calling forward-backward, in order to not waste time calculating the transitions. Emission weights will always take into account tied states, since that matters for the decoding.