### 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)

memnew_placement(r_dest, Array(p_self->values()));
}
int32_t godotsharp_dictionary_count(const Dictionary *p_self) {
	return p_self->size();
}
void godotsharp_dictionary_key_value_pair_at(const Dictionary *p_self, int32_t p_index, Variant *r_key, Variant *r_value) {
	memnew_placement(r_key, Variant(p_self->get_key_at_index(p_index)));
	memnew_placement(r_value, Variant(p_self->get_value_at_index(p_index)));
}
void godotsharp_dictionary_add(Dictionary *p_self, const Variant *p_key, const Variant *p_value) {
	p_self->operator[](*p_key) = *p_value;
}
void godotsharp_dictionary_clear(Dictionary *p_self) {
	p_self->clear();
}
bool godotsharp_dictionary_contains_key(const Dictionary *p_self, const Variant *p_key) {
	return p_self->has(*p_key);
}
void godotsharp_dictionary_duplicate(const Dictionary *p_self, bool p_deep, Dictionary *r_dest) {
	memnew_placement(r_dest, Dictionary(p_self->duplicate(p_deep)));
}
void godotsharp_dictionary_merge(Dictionary *p_self, const Dictionary *p_dictionary, bool p_overwrite) {
	p_self->merge(*p_dictionary, p_overwrite);
}
bool godotsharp_dictionary_recursive_equal(const Dictionary *p_self, const Dictionary *p_other) {
	return p_self->recursive_equal(*p_other, 0);
}
bool godotsharp_dictionary_remove_key(Dictionary *p_self, const Variant *p_key) {