Adds a missing mapping from root query fields to their types - the test scenario was using query { Dog instead of query { dog.
Threads root query field mapping and root query field name to zipper and via visitor state to visitor functions. To include context from the schema here when validating statements (some validations will require the full schema).
Eliminate possibility of creating a circular spec reference
Switch to a post-order traversal for the spec visitor - unfortunately - for object types, their fields do not yet have specs in a pre-order traversal (and there could be other order dependencies between object types that refer to other object types). As far as I can tell, we can't define a spec until after the referenced types are defined. This means that any validation that depends on specs will need to use a post-order as well (different from graphql-js)
Merge :node and :state after a validation pass
Add helper macros to define visitors that only expect to receive map inputs to enable destructuring
query { Dog
instead ofquery { dog
.:node
and:state
after a validation pass