Data.List.nub is O(n^2); replaced it with an equivalent O(n*log(n)) version

If the number of lines to be parsed is long, this will prevent parsing from being unnecessarily sluggish.

Obnoxiously, this version of nub is not in the standard library, and arguably, `nub` and its other O(n^2) `Eq`-only friends ought not to be in `Data.List` to begin with, as they're so seldom what you really want.