Some big modifications made by meishan zhang.
For class BeamSearch: (1) the feature extraction has only one interaction, controlled by GetLocalFeaturesScoreByZMS, in order to ensure the correctness. Only when updating model weights, the features are saved in the list, otherwise we get the scores only. (2) updateParameters: only update when it is necessary, also add some correctness verifications. (3)  trainer: add many correctness verifications, for example, judge whether the bestscore is bigger than goldscore, judge whether the scores of the two phrases are equal, decoding phrase and weight updating phrase.

Model: (1) corpus statistics are integrated into the Model. (2)weight updatation has some minor changes.

State: Make some minor changes.

Evaluator: remove the dependencies with other modules.

Next will be changed: the agenda should not be implemented like this, we should have a separate class for this. Especially, if the size of valid states is below beam size, the heap size should be equal to the size of valid states, not the beam size. If you implement like current version, will have many potential bugs if another programmer takes it.