Various improvements to the JSON code and test reporting bits

Yeah, my rule of thumb with Reads, Writes and Format is that if you ever have to directly implement the interface, you're probably doing it wrong. They are composable enough such that you should be able to do anything you really want by chaining together primitives.