content: Deep compare in json tests. #36
Also made MarshalJSON take a non-pointer receiver. That way it works
when marshaling both pointers and non-pointers.
Also now makes sure that the type we are marshaling in the settings
object match the type that we registered, otherwise the unmarshaled
settings object will not match the original marshaled one.