Performance improvements to Viterbi via:

1. Allow a pre-allocated dynamic programming table to be passed as
a parameter to Viterbi.

2. Change the representation of EProbs so that it doesn't use a map.