Expose JSON parsers, and decode hex during parsing

This allows the parsing to be exposed[0] in a simpler way[1], while
providing clients with instances of FromJSON for SignedTreeHash and
ConsistencyProof FromJSON, which allows them to parse using aeson
however they like.

0. This is useful when you have STHs (e.g. loading them from a file,
rather than a log server)
1. Simpler because the user doesn't have to remember to hex-decode the
binary data.