Change parser to take an io.Reader.

This seems more ideomatic, but I'm not entirely sure.  Callers don't have to call
Parse() over and over now, the parser could just run in a goroutine and it'll
do whatever it needs to do until the reader is closed, which seems good..