better json printer

We ran into an issue with `require('json-stringify-safe')`
    and how its circular json serializing is naive.

In fact when sending an object as JSON we should error
    on a circular structure instead.

cc @sh1mmer @Matt-Esch @dnathe4th