If a struct has its own MarshalJSON or UnmarshalJSON implemented, let it keep using that. Fixes #30