expose convertValue in JsonUtil, clean up tests

This also makes it so that all of the JsonUtil tests use implicit wrapper methods instead of the JsonUtil object methods, so that we're always testing through those instead of having a basic little test at the end that does so.
This isn't actually used anywhere yet. It might go away. If you would please, and if I haven't removed it or otherwise used it, ping me before you're about to close this PR and I'll remove it.