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

godot_packed_array raw_dest;
	PackedVector2Array *dest = (PackedVector2Array *)&raw_dest;
	memnew_placement(dest, PackedVector2Array(p_self->operator PackedVector2Array()));
	return raw_dest;
}
godot_packed_array godotsharp_variant_as_packed_vector3_array(const Variant *p_self) {
	godot_packed_array raw_dest;
	PackedVector3Array *dest = (PackedVector3Array *)&raw_dest;
	memnew_placement(dest, PackedVector3Array(p_self->operator PackedVector3Array()));
	return raw_dest;
}
godot_packed_array godotsharp_variant_as_packed_color_array(const Variant *p_self) {
	godot_packed_array raw_dest;
	PackedColorArray *dest = (PackedColorArray *)&raw_dest;
	memnew_placement(dest, PackedColorArray(p_self->operator PackedColorArray()));
	return raw_dest;
}
bool godotsharp_variant_equals(const godot_variant *p_a, const godot_variant *p_b) {
	return *reinterpret_cast<const Variant *>(p_a) == *reinterpret_cast<const Variant *>(p_b);
}
void godotsharp_string_new_with_utf16_chars(String *r_dest, const char16_t *p_contents) {
	memnew_placement(r_dest, String());
	r_dest->parse_utf16(p_contents);
}
void godotsharp_string_name_new_copy(StringName *r_dest, const StringName *p_src) {