Support Non-ASCII Characters and Large Files

Using runes instead of bytes to count the number of characters will allow support for properly detecting non-ASCII characters.
Using a scanner to read the file line by line rather than dumping the entire file into memory is more effective for handling large files.

This fixes issues #32 and #33.