Several changes

- Made lexer use any istream instead of just cin.
- Made parse-test open a file.
- Changed inflexible "fail" function to an exception.
- Added line numbers to nodes - still needs some fine tuning for
multi-line constructs.