Try to make constructors for Scanners and Parsers less weird.
Make error reporting more consistent and shared.