Rewrite parser

This completely removes any need to look behind for already parsed records,
and adds a second pass that assigns stats to records that did not have that
information known at the time of parsing.

With the testing data, this changed the number of records with no stat
information from approximately 1/6 to none (!).

The parser is also much cleaner now, at least as much as a parser built around
regular expressions is clean. Apparently the late night coding me really likes
nesting closures.

This closes #7.
This closes #13.