We have several constraints:
- Should be easy to use - this points to using a Haskell data type over e.g. a 
Map Text Value. 
- Input must be validated against a definition: This allows both a type-class checking against 
Object name i f and a derive Generic record. 
- Definition itself must be valid in the GraphQL sense. This can be derived both from an 
Object name i f and a derive Generic record. 
Would be nice but not necessary:
I think 1 in particular points to a derive Generic style input. We could add that to FromValue.