### Godot version

4.1.stable

### System information

Ubuntu 22.04

### Issue description

When using a Tween with tween_property on a property of class `Basis`, it doesn't seem to update its value. It only changes at the end of the tweening. This issue wasn't in 3.5 for me, and I found [this 3 month old conversation](https://www.reddit.com/r/godot/comments/12bt6us/issue_bug_trying_to_tween_basis_of_a_cube_in/) about the issue.


### Steps to reproduce

Try to tween a `Basis` property, or just run the code bellow

### Minimal reproduction project


This simple code will print the same values for five seconds and then the final value, the tweening doesn't occur.

```
extends Node

var basis = Basis(Vector3.RIGHT, Vector3.UP, Vector3.BACK)
var target_basis = Basis(Vector3.LEFT, Vector3.DOWN, Vector3.FORWARD)

func _ready():
	create_tween().tween_property(self, "basis", target_basis, 5.0)

func _process(delta):
	print(basis)

```
return p_a.spherical_cubic_interpolate_in_time(p_b, p_pre_a, p_post_b, p_c, p_b_t, p_pre_a_t, p_post_b_t);
}
Variant Animation::_cubic_interpolate_in_time(const Variant &p_pre_a, const Variant &p_a, const Variant &p_b, const Variant &p_post_b, real_t p_c, real_t p_pre_a_t, real_t p_b_t, real_t p_post_b_t) const {
	Variant::Type type_a = p_a.get_type();
	Variant::Type type_b = p_b.get_type();
	Variant::Type type_pa = p_pre_a.get_type();
	Variant::Type type_pb = p_post_b.get_type();
	
	uint32_t vformat = 1 << type_a;
	vformat |= 1 << type_b;
	vformat |= 1 << type_pa;
	vformat |= 1 << type_pb;
	if (vformat == ((1 << Variant::INT) | (1 << Variant::FLOAT)) || vformat == (1 << Variant::FLOAT)) {
		
		real_t a = p_a;
		real_t b = p_b;
		real_t pa = p_pre_a;
		real_t pb = p_post_b;
		return Math::cubic_interpolate_in_time(a, b, pa, pb, p_c, p_b_t, p_pre_a_t, p_post_b_t);
	} else if ((vformat & (vformat - 1))) {
		return p_a; 
	}
	switch (type_a) {
		case Variant::VECTOR2: {
			Vector2 a = p_a;
			Vector2 b = p_b;
			Vector2 pa = p_pre_a;
			Vector2 pb = p_post_b;
			return a.cubic_interpolate_in_time(b, pa, pb, p_c, p_b_t, p_pre_a_t, p_post_b_t);
		}