Switch from bufio.Scanner to bufio.Reader

bufio.Scanner is a trap that panics irrecoverably on very long lines.
Instead, switch to bufio.Reader, which does not have this problem
(downside: it can nom arbitrary amounts of memory, but that's totally
fine)
Tests for readlines