Set up AST node hierarchy and keyword constants

Makes sense. So in the header file, would that look like a readonly property or a method `- (NSSet *)validTypes;`?

And would it still need to be an instance variable in the Generic class, to allow setting?