I took a hard look at error output and played until I was happier. This now prints JSON for structs in the error, rather than go's format. Also made the error message easier to read. Fixed tests.
Also add a detail string for Required and Forbidden. Fix tests.
This makes the naming and reading a lot simpler.