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.

	DevFbcLexerTokensTokens
	DevFbcLexerMacrosMacro storage and expansion
	DevFbcLexerDirectivesPreprocessor directive parsing
	DevFbcLexerFilesFile contexts
	DevFbcLexerCallGraphQuick overview of the call graph

