The Object type represents a builder that constructs syntax for a
json object. It has a singleton constructor row, and an instance of
monoid, so that arbitrary objects can be constructed. Note that
duplicate field names will appear in the output, so it is up to the
user of this interface to avoid duplicate field names.

The Escaped type is a special Builder value that represents a UTF-8
encoded string with all necessary characters json-escaped. These builders
must not render the opening or closing quotes, which are instead rendered
by toBuilder. This is so that Json strings can be efficiently constructed
from multiple Haskell strings without actually concatinating the Haskell
strings (which might require some kind of conversion in addition to
concatination.)