add IsProgram to FunctionDecl and use it to generate the correct program symbol name
some cleanup in ParseProgram
don't take the next identifier as the program name if on the next line
add ProgramDecl
start giving a program its own AST node type
finish converting program from a function member to an AST type