Refactoring of main

Aggregated the yyvariables into main for easier maintenance. The
filenames list is now yyfiles, and is only used for parsing a stack of
include files for a particular program (where a program is a file
specified on the command line).

Parsing each program is now done in parse_files(filename), which is
applied to a list of program files specified on the command line. It
explicitly invokes Bison (and in turn Flex), the symbol populator, and
the type checker. This caused a few changes to the interface of symbol
as well.

When including a file, the path is resolved using the dirname of the
current file, allowing for arbitrary parsing without changing the
process's directory, thus eliminating a confusing change of directory
adjustments, and ridding me of the chdirname wrapper.