lex.go: Begin conversion to line lexer

newLexer() has been added to normalize and split the input by lines.
lex_test.go: Change %#v to %t in default panic
lex_test.go: Add string type to equal()
lex.go: Add gotoLocation()
lex.go: Rewrite backup() and add tests
lex.go: Rewrite next(), add tests
lex.go: Add width return value to peek(), and tests
lex_test.go: Reorder functions
lex_test.go: Remove duplicate lexerTests
lex.go: Remove advanceToRune()
lex.go: Rewrite peekNextLine()