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.
Well like, arbitrarily many in the sense that we could keep testing with however many classes we wanted to create. Arbitrarily many types that would fail conversion. I'm pretty sure that Scalacheck can't generate arbitrary types as such, I think that would require Scala to be a dependently typed language.