Add method to fetch a source line given the number
Add a method to format a token's source context
Refactor printLine() to use two helper methods
Refactor error reporting to go through one method

Now the report() method takes an additional parameter stating whether to
print the surrounding source context of the error location.
Remove unused method
Buffer diagnostics and only flush when asked