Encode primitive json types

Continuation of https://github.com/metosin/ring-swagger/issues/9

This PR "fixes" `Long` issue (it's issue with json middleware, not ring). Yet there is one nuance, I don't know how to fix (or does it make sense to fix at all): Currently strings are output as is, but to be valid JSON, they need to be in quotes. But if we do that for all strings, swagger-ui `conf.js` content will be escaped as well.

So we could either 
- tag non-json outputs, to avoid processing
- or wrap `conf.js` content in StringReader, so it will look like file serving (hacky, but makes sense)
This can be done without -> as assoc can take variable number of kv-pairs.