testing: Verify JSON first to avoid red herring errors
testing: Verify JSON first to avoid red herring errors

A confusing error saying got/want are equal is shown before the
actual error if the result data or expected result has invalid
JSON. This change checks both before any expectations requiring
them to ease test debugging.

Before:
```
got: graphql: Unauthorized
&{%!t(string=Unauthorized) [] [%!t(string=createRedacted)] %!t(string=) %!t(*graphql_api.AuthError=&{})}
want: graphql: Unauthorized
&{%!t(string=Unauthorized) [] [%!t(string=createRedacted)] %!t(string=) %!t(*graphql_api.AuthError=&{})}
--- FAIL: TestCreateRedacted (0.00s)
	/redacted/go/src/github.com/redacted/redacted/graphql_api/testing.go:63: invalid JSON: invalid character 'U' looking for beginning of value
FAIL
FAIL	github.com/redacted/redacted/graphql_api	0.009s
Error: Tests failed.
```

After:
```
--- FAIL: TestCreateRedacted (0.00s)
	/redacted/go/src/github.com/redacted/redacted/graphql_api/testing.go:54: want: invalid JSON: invalid character 'U' looking for beginning of value
FAIL
FAIL	github.com/redacted/redacted/graphql_api	0.004s
Error: Tests failed.
```

graph-gophers/graphql-go,chris-ramon/graphql-go,neelance/graphql-go,neelance/graphql-go,graph-gophers/graphql-go,graph-gophers/graphql-go