json: Improve parser and unescape routine.

Make the JSON parser stricter, following RFC 7159.

- restrict allowable whitespace
- parse floats (though not needed for notmuch output so far)
- restrict unescaped characters in strings
- support escaped surrogate pairs for non-BMP characters in strings
- allow Unicode Non-character code points in strings

Make the corresponding changes for the string unescaping routine.

Pay attention to the location of parse errors.
json: Let parse_json be cc_multi.

Propagate the cc_multi-ness up to the caller, and let the caller decide
to promise all parse errors as equivalent if it wants.
json: Rename array functor to list.

We represent JSON "array" values as lists, and that's how I think of
them.  JSON object values are already named "maps".
json: Delete unnecessary equivalence types.
compose: Disable text clearing behaviour when editing headers, media types.
compose: Use notmuch reply --reply-to=(sender|all).

This makes direct reply work more reliably than what was there before,
but requires Notmuch 0.12 (2012-03-20).
Use notmuch 0.15 date parser instead of GNU date.