Add test cases to demonstrate uber-go#554,
how jsonEncoder and MapObjectEncoder handle namespaces differently.
Specifically: When foo.MarshalLogObject uses OpenNamespace,
jsonEncoder.AddObject does not close the namespace.
MapObjectEncoder does not match jsonEncoder
Problem was that new openNamespaces that are created during AppendObject() call were not closed.
Note, ONLY new openNamespaces that are created during AppendObject() are closed. If they were created at prior to AppendObject() call, it will remain open till EncodeEntry() call completes.