Improved line/error handling. SyntaxError now has a ref to a Token, which reduces code duplication.