Set up AST node hierarchy and keyword constants

I made it a regular expression since that's what goes into the TWTValidator. Also, if any options need to be set it should probably happen in the initial parsing vs. the processing, since the parser "knows" the most about JSON Schema rules. What's the downside to creating one?