add a parallel forward function and test runner

wow this should have been at least a couple PRs, my apologies.

the first main part is [the first two commits](https://github.com/aaronj1335/cs388-final-project/compare/master...6ea005c), which just add `hmm::parallel_forward()`. that's all pretty strait forward. the only interesting thing there is i didn't use intel tbb because it doesn't really give us control over the number of threads, which is important/tricky when we're doing nested parallel calls.

[the second part](https://github.com/aaronj1335/cs388-final-project/compare/master...6ea005c) is the messy part where we actually get the performance numbers. i crapped it all into the `timer.{c,h}pp` files, though the part in `perform_run` should probably be in `hmm.cpp` or something. let me know if you guys think that should move.

either way you should be able to do the perf test with `make perf`. it takes freakin forever and it's only like 5% of the wsj dataset.

ready for review by @calvinmm and @abhibhad