added weighted hidden states

When defining a state, you can now give an optional parameter for the state weight. For example, if you previously wrote s1 = State( NormalDistribution( 5, 2 ), name="s1" ), you can now write s1 = State( NormalDistribution( 5, 2 ), name="s1", weight=100 ). Weights can be any positive number (so not 0), with weights above 1 adding a bonus and weights below 1 adding a penalty when aligning any symbol to this state. This is useful if you have a state which you either really want to, or really don't want to, go to. This is the same as modifying transitions to be more favorable to this state, without having to actually do it.

This effects all algorithms. By default, it does nothing, and the weight argument for states is optional.