Wrote a parser to parse streams into word and pair counts in a single pass

The parser uses unordered_maps to deal with the sparsity of
n-grams. It's written as a 2-gram parser for now, but it should
generalize if I can find a better hashing scheme (perhaps the boost
hash library could help). For now, there will be an overflow when the
number of pairs is size_t. I need to add a test case for this.

I added unit tests for the parser which all currently are passing as
well as a timing test. Currently, it's something like 20 insertions
per millisecond.
Added check on pair number