### Godot version

v4.0.beta14.mono.official [28a24639c]

### System information

Windows 10

### Issue description

The C# implementation of NodePath == operator seems to only check identity.
Comparing two equal NodePath instances returns false.
GDScript allows comparison and I expected the same behavior in C#.

### Steps to reproduce

Create two NodePath instances with the same value and compare them.
See minimal reproduction project.

### Minimal reproduction project

[godot_dotnet_nodepath_eq.zip](https://github.com/godotengine/godot/files/10512940/godot_dotnet_nodepath_eq.zip)

#ifdef DEBUG_ENABLED
	CRASH_COND(!p_unmanaged);
#endif
	void *data = CSharpLanguage::get_instance_binding(p_unmanaged);
	ERR_FAIL_NULL_V(data, { nullptr });
	CSharpScriptBinding &script_binding = ((RBMap<Object *, CSharpScriptBinding>::Element *)data)->value();
	ERR_FAIL_COND_V(!script_binding.inited, { nullptr });
	MonoGCHandleData &gchandle = script_binding.gchandle;
	
	CRASH_COND(gchandle.get_intptr().value != p_old_gchandle.value);
	CSharpLanguage::get_singleton()->release_script_gchandle(gchandle);
	script_binding.inited = false;
	
#ifdef DEBUG_ENABLED
	CRASH_COND(script_binding.type_name == StringName());
#endif
	bool parent_is_object_class = ClassDB::is_parent_class(p_unmanaged->get_class_name(), script_binding.type_name);
	ERR_FAIL_COND_V_MSG(!parent_is_object_class, { nullptr },
			"Type inherits from native type '" + script_binding.type_name + "', so it can't be instantiated in object of type: '" + p_unmanaged->get_class() + "'.");
	GCHandleIntPtr strong_gchandle =
			GDMonoCache::managed_callbacks.ScriptManagerBridge_CreateManagedForGodotObjectBinding(
					&script_binding.type_name, p_unmanaged);
	ERR_FAIL_NULL_V(strong_gchandle.value, { nullptr });
	gchandle = MonoGCHandleData(strong_gchandle, gdmono::GCHandleType::STRONG_HANDLE);
	script_binding.inited = true;
	
	RefCounted *rc = Object::cast_to<RefCounted>(p_unmanaged);
	if (rc) {