fix typos in sample code, add enum to json encoder, add test case
json bugfixes
tidy
json bugfix
json add enum encoder test case
re-special-case Option in JSON encoding
json tidy
added issue for reference in FIXME
added rather elaborate test framework
retabbing
auto merge of #4840 : jbclements/rust/add-json-enum-encoding, r=catamorphism

r?

I added code to the JSON encoder to support the serialization of enums.  Before this, the JSON serializer only handled Option, and encoded None as 'null'. Following this change, all enums are encoded as arrays containing the enum name followed by the encoded fields. This appears consistent with the unstated invariant that the resulting output can be mapped back to the input *if* there's a decoder around that knows the types that were in existence when the serialization occurred.

Also, added test cases.