use real type marshalling for fields tool

instead of inspecting the JSON tags on the struct fields directly,
actually run it through JSON marshalling and unmarshalling, then compare
those results.
intial support for endpoints that return arrays

it's not the cleanest, but it works.