Validation attempts to work on Go structs directly. But I think this is doomed: - We would need to interpret some `json` struct tags (see #22) - Worse, we need to somehow understand custom marshalers (types that implement `json.Marshaler`). I believe the only general solution is to marshal the struct to JSON before validating. I think we can still validate non-structs directly.