Partial commit, part 1/2. With the coming feature loading system we will be requiring basic rewrite of Shared/Viterbi/Train code that interacts directly with weights / feature functions.