Add filename to ScannerState.  Not quite right yet.
Prefer to use Scanner's interface over its attributes...
Simplify: remove Scanner.reset_state, .consume_any().