Progress on statement ADT and JSON handling.

I've given up on enforcing several invariants with types -- largely because I
can't figure out how to handle existential types with Aeson.