Added total token stat to generateHMM.py
Added unseen transitions to testHMM

We will need to use unseen transitions later
Major probability corrections to testHMM.py

Made many changes to fix errors in probability corrects in testHMM.py. I
still make a few incorrect assumptions about unseen bigram probabilities
I think; testing will reveal how I should proceed.

Made supporting changes in generateHMM.py to allow testHMM.py make
correct Good-Turing and Katz probability estimates. The major issue here
is which is better; my weird implementation of a mix of GT and Katz
strategies, or if I should use discounted unigram probabilities as usual
in katz backoff.

Another modification I might make is to reintroduce log probability but
do so when `a` and `b` transition and observation probabilities are
used, rather than try to do so beforehand.

This would have the disadvantage of a slower viterbi algorithm, but the
advantage is I can be more confident of my probability algorithms
overall, while preventing underflow where it is likely to occur, that is
in finding the viterbi values only.

Considering that all other probabilities will be of order 10^-5, and
only viterbi will have a chance of the product of `a` and `b` being of
order less than 10^-10, this would prevent underflow, and still reach
the right argmax values in viterbi. Of course testing will need to
verify this.

Also corrected some formatting in the README.md