JsonParser improvements

These are some snags I ran into completing the `Course.JsonParser` exercises as a student.

In addition to these changes, what is the purpose of the `Bool` field in the `JsonRational` value constructor? This was unclear. We should probably tell students how they are expected to populate this value.