Require aeson >= 0.6.2.

Otherwise we can't control how generic json renders.
Removed CPP; use objects for all-nullary constructors (for now).

This gives consistency with old aeson behavior.
Version bump to 1.12.2.3.
Use {"tag": "Str", "val": "foo"} format for JSON.
Version bump to 1.12.3.
To/FromJSON instance: Use "t" instead of "tag", "v" instead of "val".
Use "c" instead of "v" for JSON contents of tagged element.