Add JSON utils from PuppetDB, with tweaks.

All functions and tests have been carried over, though instead of
registering the org.joda.DateTime encoder when the namespace is
evaluated, it is now up to the consumer to explicitly call
`add-common-json-encoders!` or use the `with-common-encoders` macro.

The generate-string and generate-stream functions have type hints in
order to avoid introducing more reflection than the cheshire generate-*
functions do.