Some cleanups, report redeclaration errors, and build file-level symbol tables.

Renamed the ast package to front, since it's the entire compiler frontend (besides tokenization, I guess).