More general marshaling of Mercury -> JSON.

Implement a lower-level scheme for marshaling discriminated union types to
JSON.  Previously we tried to construct JSON objects whose member names matched
the field names of the Mercury type.  This turned out to be quite limiting
since not all d.u. types have field names and the old scheme could not handle
that.  In the new scheme we map a d.u. type to a JSON object of the following
form:

    {
        "functor" : "<<functor name>>"
        "args"    : [<<functor args as JSON>>]
    }

(If the functor has no arguments then we allow the 'args' member to be
omitted.)

src/json.m:
src/json.marshal.m:
src/json.unmarshal.m:
	Implement the new scheme for marshaling d.u. types.