Refine parse and AST to represent ConstValue (#3059)
This adds:
* ConstValueNode - A subtype of ValueNode which recursively excludes Variables
* Improved syntax error when encountering variable in a const value
* parseConstValue(): ConstValueNode
* isConstValue(): ConstValueNode
* Various refinements to AST types to use ConstValueNode (or a type which includes it) to better align to the spec.