libcore: handle trailing newlines more like other languages.

Specifically, `lines` and `each_line` will not emit a trailing empty string
when when given "\n". Also, add `read_lines`, which just collects all of
`each_line` into a vector.