Changed AST to store start/end tokens, and added ParserInterface::parseTokens.

 * Tokens are always stored, allowing access to line/column numbers and
   start/end offsets for both the start and end of the expression that generated
   the AST node.This is more flexible than simply storing the source (fixes #6).

 * Added `ParserInterface::parseTokens()` and changed the lexer to a method-level
   dependency of `parse()` (fixes #9).