Lexer & preprocessor

lex*.bas: File input, tokenization, macro expansion buffer, token queue, 
#include contexts.
pp*.bas: Preprocessor directive parsing, macro expansion text construction.

   The lexer reads the source code from the .bas files and translates it 
   into a series of tokens, so the FB parser sees this:

   Dim As Integer i = 5
   Print i

   as:

   (Top-level parser retrieves the first token:)
   Dim     keyword         (Go To variable declaration parser)
   As      keyword         (Go To datatype parser)
   Integer keyword         (Data Type)
   "i"     symbol          (Back To variable declaration, variable identifier)
   "="     Operator        (Go To initializer parser)
   "5"     number literal  (Expression)
   EOL     statement End   (Variable declaration parser Is done, 
   			 the variable Is added To the AST, 
   			 back To toplevel parser)
   (Next Line, Next statement)
   Print   keyword         (Go To QB Print quirk Function Call parser)
   "i"     symbol          (Expression, lookup "i" symbol, it's an integer variable,
   			 create a Call To fb_PrintInt(), the expression Is the argument)
   EOL                     (Print parser Is done, back To toplevel)
   EOF                     (Top-level parser Is done)

   The lexer is an abstraction hiding the ugly details of user input 
   (indentation, comments, keyword capitalization, #includes) from the 
   parser. Additionally it does preprocessing, consisting of macro 
   expansion and preprocessor directive parsing. The general idea is to 
   handle all preprocessing in the lexer, so the parser does not get to see 
   it. The parser never calls preprocessor functions, the lexer functions 
   do that.

   Tokens
   Macro storage and expansion
   Preprocessor directive parsing
   File contexts
   Quick overview of the call graph

