Handle empty variants in the parser instead of later.
Fix bugs in lexer relating to multi-line comments.
Add more comments to the lexer
Massive frontend overhaul

- Rename resolve.rs to resolver.rs
- Parser => StreamParser, ParserContext => Parser
- Introduce Session, allow parsing files with names
- Refactor Lexer to take a buffer and filename instead of a line iterator
- Updates for rust master