add proper include handling to the parser

 * main file and include directories must be given as absolute paths
 * included files are searched relative to the including file's
   directory, then in the include directories in order
 * files may be included more than once, in which case only the first
   inclusion does anything
 * recursive includes are not allowed
make the AST properly visitable