HiddenMarkovModelTrainer.train_unsupervised must use the same states and symbols as model.

They can be different even if the same values are passed to constructor because HiddenMarkovModelTagger deduplicates them (and change their order).