Basic Jawn support

This PR includes basic support for the jawn ast. It can use any of the supported jawn parsers (or custom parsers) for decoding json.
It uses the built in jawn ast for encoding json.
(discussed in #45)
You can also consider making this `val`, since we have a `def` for other case. Something like `val encodeJawn = ...`.