Refactoring Viterbi processing, splitting into several separate objects for building and searching. Changed timing for user dictionary overwrite of lattice.