Use parsec to parse history lines

This ends up being longer, but it's potentially more robust, readable, and demonstrates a legit parser instead of using splits.

@pbrisbin @r00k @gfontenot @calebthompson @gabebw