Add DiscriminantTrainer
Make FullDecoder be multi-threaded when order >= 3