Various improvements to the JSON code and test reporting bits

That is a *really* good point, although I can't really think of a better way to model this. I will admit that I don't know how it gets used downstream. Of course, there's no specific harm in just punting and making it a String, but of course then you lose the semantics around the fact that it's actually a URL (and theoretically needs to be a valid URL).