Fix buffer; correctly print line numbers and utf-8

This fixes the read buffer to be more buffer-y. It wasn't getting
cleared since it was instantiated outside the outer for loop.

Bytes are now correctly printed to STDOUT using `os.Stdout.Write()`.

Line numbers now only print if there is at least one character in
that line. Previously, the newline just before EOF would cause an
erroneous additional line number to be printed.

Line number notation is now suffixed with a single tab character.

This commit also fixes a bug with printing the decoded rune of a
byte instead of the byte itself. We only decode runes to determine
if it matches a specific UTF-8 codepoint; specifically, for
newline detection.

Finally, newline has been made a constant rune instead of
wastefully re-calculating the same int32 value each time we look
at a byte.