makes the parser skip invalid lines instead of crashing on them
moves Generate to the generate package
adds cpu and memory profiling options. looks like most of the cpu usage comes from parsing pages with regexes, and the largest memory consumers are xml encoding and id tracking