Implement an embedded C like preprocessor.

  The preprocessor is almost feature complete, with some intended
limitations, and others that may still be reworked to be enabled:

o Does not allow a macro with a name that matches a keyword
  cannot #define if(expr) if(!(expr)))
o No traditional mode
o Does not allow indirect macro call
  cannot #define call(macro, arg)	macro(arg)
o Does now allow wrong number of arguments to macro function
  usually it should just print a warning not expand anything