Fixed has_shape to handle nested json properly.

For nested shapes the has_shape method was examining only values of the root json object instead of looking at the actual json child element. For example:

json: {"key1": {"key2": "value2"}}
shape: {{"key1", Json::Type::OBJECT}, {"key2", Json::Type::STRING}}

In this case has_shape would return false because it would look for "key2" in the root json object instead of under the key1 object.

I added a simple test to verify the behavior of has_shape.