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

```
if (Math::is_equal_approx(t0.time, t1.time) || Math::is_equal_approx(t1.time, t2.time)) {
		return true;
	}
	if ((t0.value - t1.value).length() < p_allowed_precision_error && (t1.value - t2.value).length() < p_allowed_precision_error) {
		return true;
	}
	
	Vector3 vc0 = (t1.value - t0.value) / (t1.time - t0.time);
	Vector3 vc1 = (t2.value - t1.value) / (t2.time - t1.time);
	double v0 = vc0.length();
	double v1 = vc1.length();
	
	if (abs(v0 - v1) < p_allowed_precision_error) {
		return true;
	} else if (abs(v0) < p_allowed_precision_error || abs(v1) < p_allowed_precision_error) {
		return false;
	}
	
	if (vc0.normalized().dot(vc1.normalized()) >= 1.0 - p_allowed_angular_error * 2.0) {
		v0 = abs(v0);
		v1 = abs(v1);
		double ratio = v0 < v1 ? v0 / v1 : v1 / v0;
		if (ratio >= 1.0 - p_allowed_velocity_err) {
			return true;
		}
	}
	return false;
}
bool Animation::_quaternion_track_optimize_key(const TKey<Quaternion> t0, const TKey<Quaternion> t1, const TKey<Quaternion> t2, real_t p_allowed_velocity_err, real_t p_allowed_angular_error, real_t p_allowed_precision_error) {